使用`interface I {foo:string;酒吧:号码; }`作为命名空间`(可以:I.foo)`?
问题描述:
鉴于像一个简单的界面:使用`interface I {foo:string;酒吧:号码; }`作为命名空间`(可以:I.foo)`?
interface IHaz {
foo: string;
bar: number;
}
什么使最好的方法:
export const f = (a: typeof IHaz.foo, b: typeof IHaz.bar) => {};
(我的实际代码有更复杂的接口,类型foo
/bar
;我f
是专门处理子集IHaz
...所以我不想将它分成多个interface
s)
答
语法对于typescrip来说是唯一的PT我认为 - 它采用所谓的索引访问类型为
export const f = (a: IHaz['foo'], b: IHaz['bar']) => {};
...运营商T [K],索引访问运算符。这里,类型 语法反映了表达式语法。这意味着person ['name'] 的类型为Person ['name'] - 在我们的示例中,它只是字符串。
奇怪。很高兴知道。 +1已接受 –