Javascript Typescript动态属性键入

Javascript Typescript动态属性键入,javascript,typescript,casting,Javascript,Typescript,Casting,我有一个类,它接受一个对象,我想将其属性设置为实例的this: class Test { constructor(config) { for(let field in config) { this[field] = config[field]; } } } const test = new Test({name: "JOHN", age: 13}); 配置对象是动态的,可以是任何属性;有没有一种方法可以让我在入会后获得智能感知 例如,现在当我键入test和d

我有一个类,它接受一个对象,我想将其属性设置为实例的this

class Test {
  constructor(config) {
   for(let field in config) {
      this[field] = config[field];
    }
  }
}

const test = new Test({name: "JOHN", age: 13});
配置对象是动态的,可以是任何属性;有没有一种方法可以让我在入会后获得智能感知


例如,现在当我键入test和dot时,我希望获得Intellisense,因为配置对象属性是该类的成员。

我认为最接近的是具有泛型属性的泛型类

class Test<T> {
  constructor(public config: T) { }
}

interface Person {
  name: string;
  age: number;
}
const test = new Test<Person>({ name: "JOHN", age: 13 });

test.config.name
类测试{
构造函数(公共配置:T){}
}
接口人{
名称:字符串;
年龄:人数;
}
常量测试=新测试({姓名:“约翰”,年龄:13});
test.config.name


类型不会更改代码,它们只是设计时工件。类型在编译时只会“蒸发”,因此TypeScript无法为intellisense提供运行时发生的事情。

为什么要这样做?为什么不让配置作为类的成员呢?这是一个复杂的答案。我只需要这样做。好吧,由于您提供的信息有限,答案是不,您将无法获得类型信息(对于Intellisense)。如果你需要帮助,你需要解释你的问题/场景。我刚才在问题中解释过。我想向实例动态添加属性。如果您事先不知道属性,那么您希望获得什么类型的信息?如果您在编写代码时知道它们,那么它们就不是动态的。你需要做出决定,或者再一次:更好地解释你的问题/场景。