首页 > 解决方案 > 打字稿:检查字符串变量值是作为类型 T 给出的类的属性名称的一部分

问题描述

我创建了一个工厂,检查给定的属性是否存在于我的 A 类中。

这有效:

nameOf<A>("name")

因此,鉴于它可以工作的字符串,但在使用变量(动态)时我无法使其工作:

nameOf<A>(this.filters.orderCode) // this.filters.orderCode can contain "id", "name", ... so properties of my A class

错误消息:“字符串”类型的参数不可分配给“id”类型的参数 | “名字” | ...我的工厂名称:

export const nameOf = <T>(name: keyof T) => name;

我的对象 A 类:

export class A {
  id: number = 0;
  name = '';
  ...
}

编辑

nameOf 工厂让智能感知有机会显示我的模型属性列表,并验证它是否存在于其中: 在此处输入图像描述

我正在使用打字稿 3.2.4

非常感谢您的帮助。

标签: typescriptfactorytypescript-generics

解决方案


推荐阅读