Brakuje wymaganej właściwości
Property 'b' is missing in type '{ a: number; }' but required in type 'Need'.Własne słowa kompilatora. Nietłumaczone — to ten ciąg, który wkleiłeś w wyszukiwarkę.
Obiekt ma właściwy kształt na tyle, na ile sięga — tylko nie sięga dość daleko. Każda właściwość wymagana przez cel musi być obecna.
Odtworzenie
type Need = { a: number; b: string } const x: Need = { a: 1 }
Build potwierdza, że to emituje dokładnie ten kod.
Dlaczego kompilator tak mówi
To najprzyjaźniejszy błąd na tej liście, bo nazywa dokładną właściwość i oba typy. Pojawia się tam, gdzie zwykła porażka przypisywalności byłaby mętniejsza, i znaczy, że kompilator rozpoznał, co budujesz, i widzi dokładnie, czego brakuje. Traktuj to jak listę kontrolną, a nie odmowę.
Naprawy
- 01
type Need = { a: number; b: string } const x: Need = { a: 1, b: 'two' }
Podaj ją.
- 02
type Need = { a: number; b?: string } const x: Need = { a: 1 }
Albo uczyń ją opcjonalną, jeśli naprawdę taka jest. Rób to tylko wtedy, gdy wartość bez `b` jest poprawna — nie po to, by ominąć błąd.
Wniosek
Opcjonalna właściwość to twierdzenie o twojej domenie, a nie sposób na uciszenie kompilatora. Dodanie `?`, by zdusić ten błąd, przesuwa awarię na tego, kto później tę wartość przeczyta.