【发布时间】:2020-10-13 20:27:52
【问题描述】:
这是打字稿中的预期行为吗?
const NeedsRecord = <T extends Record<string, any>>(record: T) => {}
NeedsRecord({
5: "???? Should error, doesn't ????"
});
我想通过继承来限制Record 的键类型。我该怎么做?
将键类型作为泛型参数也不能按预期工作:
const NeedsRecord = <T extends string>(record: Record<T, any>) => { }
NeedsRecord({
5: "???? Should error, doesn't ????"
});
显式定义联合键类型有效,但使用起来很丑:
const NeedsRecord = <T extends string>(record: Record<T, any>) => { }
NeedsRecord<"a"|"b">({
a: "works",
b: "works",
// 5: "???? fails properly"
// c: "???? fails properly"
});
【问题讨论】:
标签: typescript