Realmente depende de lo que intentes hacer. Los tipos son documentación en mecanografiado, por lo que desea mostrar la intención sobre cómo se supone que se debe usar esto cuando está creando el tipo.
Opción 1: si los usuarios pueden tener algunos de los atributos, pero no todos, durante su vida
Hacer que todos los atributos sean opcionales
type User = {
attr0?: number
attr1?: string
}
Opción 2: si las variables que contienen usuarios pueden comenzar como nulo
type User = {
...
}
let u1: User = null;
Aunque, en realidad, aquí si el punto es declarar el objeto Usuario antes de que se sepa qué se le asignará, probablemente desee let u1:Userprescindir de ninguna asignación.
Opción 3: lo que probablemente quieras
Realmente, la premisa del mecanografiado es asegurarse de que se ajusta al modelo mental que esboza en tipos para evitar cometer errores. Si desea agregar cosas a un objeto uno por uno, este es un hábito que TypeScript está tratando de que no haga.
Lo más probable es que desee crear algunas variables locales y luego asignarlas a la variable que contiene el usuario cuando esté lista para ser un usuario completo. De esa forma, nunca te quedarás con un usuario parcialmente formado. Esas cosas son asquerosas.
let attr1: number = ...
let attr2: string = ...
let user1: User = {
attr1: attr1,
attr2: attr2
}
userser de tipoUser | {}oPartial<User>necesita redefinir elUsertipo para permitir un objeto vacío. En este momento, el compilador le está diciendo correctamente queuserno es unUser.