我在写一个类,在构造函数中我可以传递一个参数,它是一个对象数组:
class MyClass {
constructor(p: Array<CustomObject>) {
// TODO
}
}
现在,类并不重要,重要的是CustomType
类型脚本类型,我想创建一个基于单个属性值的“动态”类型(或者更好,具有动态属性)。
我知道在typescript中我们可以使用泛型来实现这样的函数:
function foo<T extends 'bar' | 'baz'>(x: T) {
// TODO
}
这样我们就不用每次使用函数时都定义泛型了,我们只需要调用它,传递参数,然后typescript就能推断出类型,但是对象呢?
我需要这样的东西:
type CustomObject<T extends 1 | 2> = {
x: T // Here i need typescript to infer the type
}
为了像这样使用它:
const obj: CustomObject = {
x: 1 // Now typescript knows the type without explicitly setting it as a generic
}
到目前为止,我尝试了上面的例子(当然失败了),显然类的方法:
class CustomObject<T extends 1 | 2> {
constructor(init: { x: T }) {
// TODO
}
}
const obj = new CustomObject({ x: 1 }) // This way typescript knows the type and i don't have to pass a generic
我只是想知道是否有一种方法可以不使用类来定义动态对象类型。
1条答案
按热度按时间pn9klfpd1#
你可以用同样的方法,但是用函数代替类