を使用const user = {} as UserTypeするとインテリセンスが提供されますが、実行時にuserは空のオブジェクト{}であり、内部にプロパティがないことに注意してください。つまりuser.Email、undefined代わりに与える""
type UserType = {
Username: string;
Email: string;
}
したがって、classwithconstructorを使用して、デフォルトのプロパティを持つオブジェクトを実際に作成します。
type UserType = {
Username: string;
Email: string;
};
class User implements UserType {
constructor() {
this.Username = "";
this.Email = "";
}
Username: string;
Email: string;
}
const myUser = new User();
console.log(myUser);
console.log("val: "+myUser.Email);
interface代わりに使用することもできますtype
interface UserType {
Username: string;
Email: string;
};
...そして残りのコードは同じままです。
実際には、そのconstructor部分をスキップして、次のように使用することもできます。
class User implements UserType {
Username = "";
Email: string;
}
const myUser = new User();
console.log(myUser);
userタイプUser | {}またはPartial<User>、になりたいか、Userタイプを再定義して空のオブジェクトを許可する必要があります。現在、コンパイラはそれuserがではないと正しく通知していますUser。