簡體   English   中英

使用TypeScript的“ as”表示法是否需要導出名稱空間?

[英]“as” notation with TypeScript, need to export a namespace?

我有這個TypeScript代碼:

import * as suman from 'suman';

const Test = suman.init(module,{
    ioc: {
        a: 'foo',
        b: 'far'
    } as suman.Ioc
});

如您所見,我試圖聲明ioc對象的類型為suman.Ioc(ioc對象應“遵守Ioc接口”)。 但是我的IDE說“找不到命名空間'suman'”。

在這種情況下,如何創建類型並在我的代碼中引用它? 如果可能的話,我希望能夠從suman導入中引用Ioc對象類型。

換句話說,我不想在同一文件中全部這樣做:

    declare namespace suman {

        interface Ioc {
             a: string,
             b: string
        }
    }


   import * as suman from 'suman';

    const Test = suman.init(module,{
       ioc: {
          a: 'foo',
          b: 'far'
        } as suman.Ioc  
    });

原因是因為我將不得不為每個不需要這樣(或不建議)的文件重復命名空間聲明。

已鍵入suman ,但尚未發布該版本。

現在,如果您願意使用最新代碼,則可以通過npm install sumanjs/suman

如果要使用最新版本並使用鍵入,則可以考慮使用typings來安裝鍵入文件: typings install suman=github:sumanjs/suman/lib/index.d.ts並包括typings/index.d.ts在您的tsconfig.json

至於as suman.Ioc ,它是一種告訴編譯器的方式:“嘿,我知道您認為此“事物”是其他類型的,但是我希望您將其視為“ suman.Ioc””。

這就是為什么即使有鍵入內容,也無法滿足您的要求的原因。

幸運的是, suman提供的類型對您來說很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM