是否可以从字符串值创建打字稿类型?
像这样
const typeName = 'number';
type myType = typeName;
const x: myType = 5;
答案 0 :(得分:1)
即使对于内置类型,实际上也不可能从类型名称转换为打字稿中的类型。您可能会考虑在名称和类型之间创建映射接口。然后,从名称到类型将需要一个简单的类型索引查询:
interface TypeMap {
number: number,
string: string,
boolean: boolean,
// etc
}
const typeName = 'number';
type myType = TypeMap[typeof typeName];
const x: myType = 5;
编辑,我们需要typeof typeName
(而不是typeName
中的TypeMap[typeof typeName]
),因为类型索引查询适用于类型(不适用于变量等值)。但是,我们可以使用typeof
类型运算符获取任何变量的类型。
答案 1 :(得分:1)
在运行时动态地为API生成类型并不是很有用,因为那时为时已晚,您不妨使用any
听起来您想要做的是为API生成类型作为预构建步骤。
为此,有几种选择,一种是使用诸如openapi3之类的格式编写API规范,然后使用代码生成工具生成API客户端/粘合代码。这是我在多个项目中采用的方法,并且效果很好,但是您有时必须与生成器作战。
也有一些工具可以从JSON blob生成JSON模式,然后从JSON模式生成打字稿类型。同样,它们也不是完美的,但是通常这可能是一种快速简便的方法来为API设置脚手架类型,然后您可以手动进行优化。