typescript 获取对象属性类型的名称

uinbv5nw  于 2023-03-13  发布在  TypeScript
关注(0)|答案(1)|浏览(202)

假设我有这个类和它的对象

export class Person {
   constructor(name: string, age: number) { 
      this.name = name;
      this.age = age;
   }
   public name: string,
   public age: number
} 

const person = new Person();

有没有什么方法可以得到它的属性类型,比如:

console.log(person.age.type) ????? => 'number'
7kjnsjlb

7kjnsjlb1#

请记住,所有特定于TypeScript的数据(如类型注解)都不会进入运行时。您不能在运行时自动物化您声明的任何非JavaScript本地数据。
然而,每当一个变量或字段贝内赋值时,你能做的就是用typeof操作符询问它的类型。

const str = "hello";
console.log(typeof str); // "string"

const person = new Person('Bob', 42);
console.log(typeof person.name); // "string"

但是,请注意,如果字段没有值,您将无法获得有关字段类型的任何信息:

const person = new Person(); // but the compiler should prevent this!
console.log(typeof person.name); // "undefined"

另外,请记住,在TypeScript中,当您定义这样非常简单的数据类并希望简化表示法时,只需向构造函数的参数添加可见性说明符,将它们转换为自动保存传递值的字段:

export class Person {
    constructor(public name: string, public age: number) { }
}

相关问题