我在獲取文件名稱空間以正確解析和編譯時遇到了一些問題。根據documentation這SO answer,下面應該不會產生問題:TypeScript名稱空間跨文件合併
App.Core.ts
namespace App.Core {
export function createElem(tagName: string): JQuery {
return $(document.createElement(tagName));
}
}
App.Core.SubModule.ts
/// <reference path="App.Core.ts" />
namespace App.Core.SubModule {
export function Test(): JQuery {
return App.Core.createElem("div");
}
但是,Visual Studio是給我在App.Core.SubModule.Test
函數調用錯誤,指出Property 'createElem' does not exist on type 'typeof Core'
我的理解是,如果命名空間跨越多個文件TS編譯器將自動解決這些命名空間。它看起來像相應的JavaScript出來正確,但缺乏智能感知(和紅色波浪錯誤線)是非常令人沮喪,讓我第二次猜測我在寫什麼。
這是我的文件設置,使用TS編譯器還是Visual Studio 2015顯然破損的TypeScript智能感知功能的問題?
此代碼可以很好地編譯Webstorm。我懷疑組合輸出中文件的順序有所不同。看看它。無論如何,如果可以的話,離開命名空間並使用外部模塊。這將爲您節省很多這些類型的麻煩 –
遵循您的建議並改爲使用外部模塊。 Typescript對我來說仍然是一個非常陌生的想法。花了一點搜索和挖掘才發現Typescript的輸出不會在沒有像require.js這樣的其他資源的瀏覽器中運行。在TS文檔中肯定很難破譯和發現。但是,謝謝你的幫助!最後可以開始我的項目的下一部分! – Bwolfing