我的问题有两个:
function foo<T is a string literal>(...)。我最接近这种行为的是function foo<T extends string>,但这允许字符串文字和类型“string”本身作为 T 的值的联合。我的用例是定义一个柯里化函数,prop如下所示:
function prop<K extends string, U>(name: K): <T extends { [P in K]: U }>(obj: T) => T[K] {
return (obj) => obj[name];
}
prop<'name', number>("name")({
name: 3
})
Run Code Online (Sandbox Code Playgroud)
K如果是字符串文字,则此示例按预期工作,但函数类型的类型检查K会失败string。
我知道这有点做作;请注意,我的目标不是解决实际问题(尽管它会),而是更多地尝试 TypeScript 的类型系统。
谢谢你!