我有这个:
interface Obj {
foo: string,
bar: number,
baz: boolean
}
期望的类型是这个元组:
[string, number, boolean]
如何将接口转换为元组?
更新:
我的原始问题是: 我使用一种声明式的精神创建了一些有见解的库,用户应该在对象字面量中描述函数的参数。就像这样:
let paramsDeclaration = {
param1: {
value: REQUIRED<string>(),
shape: (v) => typeof v === 'string' && v.length < 10
},
param2: {
value: OPTIONAL<number>(),
...
},
}
然后图书馆拿这个对象并使用其中的参数创建一个函数:
(param1: string, param2?: number) => ...
因此,编写这样的函数并不是问题,问题在于正确地类型,以便用户获得良好的代码完成(IntelliSense)。
附言:我知道这是无法解决的,但了解最接近的可能解决方法/技巧会很有趣。
paramsDeclaration
结构化为一个数组而不是一个对象?如果你想要参数的名称,你可以将它们放在子对象的字段中。 - Matt McCutchen