打字稿:如何在界面上引用嵌套类型?

时间:2017-06-21 13:19:03

标签: typescript

如何引用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) {};

但我想以更加命名空间的方式使用该定义,如上例所示。我该如何做到这一点?

1 个答案:

答案 0 :(得分:2)

类型别名不是命名空间,你不能像那样引用它的内部属性 只需使用另一个命名空间/模块:

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