[英]“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.