使用`interface I {foo:string;酒吧:号码; }`作为命名空间`(可以:I.foo)`?

使用`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']) => {}; 

documentation says

...运营商T [K],索引访问运算符。这里,类型 语法反映了表达式语法。这意味着person ['name'] 的类型为Person ['name'] - 在我们的示例中,它只是字符串。

+0

奇怪。很高兴知道。 +1已接受 –