假设我有一些类型:
type A = { a : string };
type B = { b : string };
和具有属性的接口,其中每个属性都是一个类型:
interface Foo {
a: A;
b: B;
}
现在我的功能是通用的:
function foo<K extends Foo[keyof Foo]>(arg : K) : K {...}
有没有办法以较短的方式编写K extends Foo[keyof Foo]
?像K extends property of Foo
之类的东西?至少有些东西不会强迫我写两次Foo
?
答案 0 :(得分:2)
您可以为此
定义自己的通用类型type Properties<T> = T[keyof T]
然后像这样使用它
function foo<K extends Properties<Foo>>(arg: K): K
答案 1 :(得分:1)
您可以为Foo
属性类型创建别名:
type FooProps = Foo[keyof Foo];
function foo<K extends FooProps>(arg: K): K { ... };