我正在尝试从构造中的变量获取所有定义的类型。
export interface TestType {
resultType?: 'NUMBER' | 'STRING' | 'DATE' | 'ENUM' | 'AMOUNT' ;
}
我期待着这样的结果。
const types: string[] = ['NUMBER', 'STRING', 'DATE', 'ENUM', 'AMOUNT'];
构造函数可能具有实现这一点的功能或能力。何时无法更改控制器?
我尝试将其自动化,这样它基本上可以提取所有类型,并且我可以让它们进行选择。
这只是一个不可能的例子。
或者类似解决方案的想法?
实际我目前在v4.0.5 中使用Typescript
谢谢。
如果您想要的是类似于迭代变量的可能值的东西。类型需要在typescript中以静态的最终方式引用。
export class TestClass{
types = ['NUMBER', 'STRING', 'DATE', 'ENUM', 'AMOUNT'] as const;
resultType: TestClass["types"][number];
}
在上面的示例中,resultType的可接受值是类型数组的成员。因此将触发类型验证。
由于这些类型在运行时不存在,因此无法直接生成字符串。您可以创建一些帮助程序,以确保您只使用正确的键。
type Types = 'foo'|'bar'|'baz';
type TypeHolder<T extends string> = { [Key in T]: number; }
function getKeys<T extends string>(types: TypeHolder<T>) {
return Object.keys(types);
}
console.log(getKeys<Types>({ foo: 1, bar: 1, baz: 1 })); // ['foo', 'bar', 'baz']
嗯,不是很好。换一种方式可能会容易得多:
const types = ['foo', 'bar', 'baz'] as const;
type Types = typeof types[number]; // 'foo'|'bar'|'baz'