Naprawdę zależy od tego, co próbujesz zrobić. Typy są dokumentacją w maszynopisie, więc chcesz pokazać zamiar użycia tego elementu podczas tworzenia typu.
Opcja 1: jeśli użytkownicy mogą mieć niektóre, ale nie wszystkie atrybuty w ciągu swojego życia
Ustaw wszystkie atrybuty jako opcjonalne
type User = {
attr0?: number
attr1?: string
}
Opcja 2: Jeśli zmienne zawierające Użytkownicy mogą zaczynać się od null
type User = {
...
}
let u1: User = null;
Chociaż, tak naprawdę, jeśli chodzi o zadeklarowanie obiektu User, zanim będzie można wiedzieć, co zostanie do niego przypisane, prawdopodobnie chcesz to zrobić let u1:Userbez żadnego przypisania.
Opcja 3: Czego prawdopodobnie chcesz
Naprawdę, założeniem maszynopisu jest upewnienie się, że stosujesz się do modelu mentalnego, który zarysowujesz w typach, aby uniknąć popełnienia błędów. Jeśli chcesz dodawać rzeczy do obiektu jeden po drugim, jest to nawyk, który TypeScript stara się powstrzymać.
Bardziej prawdopodobne jest, że chcesz utworzyć jakieś zmienne lokalne, a następnie przypisać je do zmiennej zawierającej użytkownika, gdy będzie gotowa, aby być pełnym użytkownikiem. W ten sposób nigdy nie zostaniesz z częściowo utworzonym użytkownikiem. Te rzeczy są obrzydliwe.
let attr1: number = ...
let attr2: string = ...
let user1: User = {
attr1: attr1,
attr2: attr2
}
userbyć typuUser | {}lubPartial<User>czy trzeba przedefiniowaćUsertyp celu umożliwienia pusty obiekt. W tej chwili kompilator poprawnie mówi ci, żeusernie jest to plikUser.