如何为该对象编写打字稿声明文件?

时间:2020-04-20 13:59:15

标签: javascript typescript

这是JavaScript代码:

const obj = {
  result: {},
  add(key, value) {
    this.result[key] = value;
  }
};

obj.add('test', 1);

如何为obj写一个打字稿声明,以使vscode知道obj.result现在有一个名为“ test”的属性,其类型是数字?

1 个答案:

答案 0 :(得分:1)

您可能不能(我不知道在v3.8中可以实现此目的的结构),运行时没有ts类型信息(如果您想根据add函数的调用确定结果属性的类型)。

您可以做的是创建obj的通用定义,该定义将value参数类型与结果属性结构相关联。

type MyType<T> = {
  result: Record<string, T>;
  add: (key: string, value: T) => void;
}