Oto szybki sposób sprawdzenia tego, co się dzieje:
Kiedy wykonałeś następujące czynności:
Nazwa? : strunowy
Mówiłeś do TypeScript, że to opcjonalne. Niemniej jednak, kiedy to zrobiłeś:
let name1 : string = person.name;
Nie zostawiłeś tego wyboru. Musiałeś mieć na nim Unię odzwierciedlającą niezdefiniowany typ:
let name1 : string | undefined = person.name;
Korzystając z twojej odpowiedzi, mogłem naszkicować następujący, który jest w zasadzie interfejsem, klasą i obiektem. Uważam, że to podejście jest prostsze, nieważne, jeśli nie.
interface iPerson {
fname? : string,
age? : number,
gender? : string,
occupation? : string,
get_person?: any
}
class Person implements iPerson {
fname? : string;
age? : number;
gender? : string;
occupation? : string;
get_person?: any = function () {
return this.fname;
}
}
const person1 : Person = {
fname : 'Steve',
age : 8,
gender : 'Male',
occupation : 'IT'
}
const p_name: string | undefined = person1.fname;
const person2: Person = new Person();
person2.fname = 'Steve';
person2.age = 8;
person2.gender = 'Male';
person2.occupation = 'IT';
console.log('person1 : ', p_name);
console.log('person2 : ', person2.get_person());