我想定义某种类型,它是某种其他类型的键。可以这样做
interface B {
x: something;
y: string;
z: something;
}
type keyOfB = keyof B;
export class A {
foo: keyOfB;
}
但是同时我只想让foo是某种类型,例如字符串或其他东西,如何将其组合?
foo: keyOfB & type
不起作用。
从理论上讲,它是Pick <>或Extract <>的工作,但我无法使其工作
https://www.typescriptlang.org/docs/handbook/utility-types.html
答案 0 :(得分:0)
所以我修改了这里发布的答案https://stackoverflow.com/a/53899815
对此似乎有效:)
type KeyOfType<T extends object, Type> = Exclude<{
[K in keyof T]: T[K] extends Type
? K
: never
}[keyof T], undefined>
用法:
interface B {
x: something;
y: string;
z: something;
}
export class A {
foo: KeyOfType<B, string>;
}
Foo prop只允许分配字符串类型B的键。 (在这种情况下,只有'y')