2017-06-21 75 views
1

我如何引用typecript定義的嵌套屬性的類型?這是我的嘗試:Typescript:如何引用接口上的嵌套類型?

// def.d.ts 
declare module Def { 
    type TFoo = { 
     bar: (...args) => void; 
    } 
} 

// script.ts 
const bar: Def.TFoo.bar = function() {}; // Error TS2694: Namespace 'Def' has no exported member 'TFoo' 

我知道我可以單獨定義並引用它:

// def.d.ts 
declare module Def { 
    type TFooBar = (...args) => void; 
    type TFoo = { 
     bar: TFooBar; 
    } 
} 

// script.ts 
const bar: Def.TFooBar = function (...args) {}; 

但我想用的定義更命名空間的方式,就像上面的例子。我如何實現這一目標?

回答

2

一個類型別名不是一個名字空間,你不能像那樣引用它的內部屬性。
只需使用另一個命名空間/模塊:

declare module Def { 
    module TFoo { 
     type bar = (...args) => void; 
    } 
}