Dipende davvero da cosa stai cercando di fare. I tipi sono documentazione in dattiloscritto, quindi vuoi mostrare l'intenzione su come dovrebbe essere usata questa cosa quando crei il tipo.
Opzione 1: se gli utenti possono avere alcuni ma non tutti gli attributi durante la loro vita
Rendi facoltativi tutti gli attributi
type User = {
attr0?: number
attr1?: string
}
Opzione 2: se le variabili contenenti Users possono iniziare con null
type User = {
...
}
let u1: User = null;
Anche se, in realtà, qui se il punto è dichiarare l'oggetto User prima di poter sapere cosa gli verrà assegnato, probabilmente vorrai fare a let u1:Usermeno di alcun assegnamento.
Opzione 3: quello che probabilmente vuoi
In realtà, la premessa del dattiloscritto è assicurarsi di conformarsi al modello mentale che si delinea nei tipi per evitare di commettere errori. Se vuoi aggiungere cose a un oggetto una per una, questa è un'abitudine che TypeScript sta cercando di farti non fare.
Più probabilmente, desideri creare alcune variabili locali, quindi assegnarle alla variabile contenente l'utente quando è pronta per essere un utente completo. In questo modo non sarai mai lasciato con un utente parzialmente formato. Quelle cose sono disgustose.
let attr1: number = ...
let attr2: string = ...
let user1: User = {
attr1: attr1,
attr2: attr2
}
useressere di tipoUser | {}oppurePartial<User>devi ridefinire ilUsertipo per consentire un oggetto vuoto. In questo momento, il compilatore ti sta dicendo correttamente cheusernon è un fileUser.