После того, как вопрос был отредактирован
Я все еще рекомендую ответ "до того, как вопрос был отредактирован", но для ответа на вопрос:
new User({name: authData.displayName})
не может работатьбез настройки конструктора.Класс имеет конструктор по умолчанию, User()
в вашем случае, который не принимает аргументов.Если вам нужно или вы хотите использовать класс вместо интерфейса (см. Ниже), то вы можете сделать несколько обходных путей .
Грубые примеры:
// object "as"
authData => <User>{name: authData.displayName, ... other props}
// object "as" 2
authData => {name: authData.displayName, ... other props} as User
// new user, return after changing props
authData => {
const user = new User();
user.name = authData.displayName;
// ...the rest
return user;
}
// "builder" method (basically a constructor)
function buildUser(name: string, ...other props) {
const user = new User();
user.name = authData.displayName;
// ...the rest
return user;
}
До того, как вопрос был отредактирован Если вы не хотите использовать конструктор и класс является просто моделью без дополнительных методов, я рекомендую использовать интерфейс.
// interface
export interface User {
name: string;
email: string;
contactNo: string;
}
// inside map
authData => {name: authData.displayName, ...<other props>}
// inside map with type checking 1
authData => <User>{name: authData.displayName, ...<other props>}
Этот ответ содержит более подробную информацию.