2
我想引用使用Resig的「擴展」已有的代碼,但我得到了一堆錯誤打字稿:引用Resig的延長
的------ ----- test.ts ---
/// <reference path="myclass.js" />
var m = new MyClass (3);
------ myclass.js --------
/// <reference path="class.js" />
var MyClass = Class.extend({
init: function (i)
{
this.i = i;
},
})
------ class.js ------- -
(copied from http://ejohn.org/blog/simple-javascript-inheritance/)
個
錯誤:
Supplied parameters do not match any signature of call target
The name 'Class' does not exist in the current scope
The property 'extend' does not exist on value of type '() => void'
The name 'Class' does not exist in the current scope
我知道最終我會想重寫擴展爲基礎的代碼打字稿,但在那之前,我要如何新代碼中引用呢?
我想這引發了更深的問題 - 爲什麼它抱怨現有的JavaScript代碼中的類型錯誤?
我很困惑。如果我在我的.ts文件中添加 標記,我會在Visual Studio的'錯誤列表'窗口中看到錯誤,所以它至少試圖解析它。你是說TypeScript不能推斷出那些類型,但會爲它們產生錯誤嗎?我想我不確定互操作的故事在這裏。如果我必須編寫.d.ts文件,爲什麼它會打擾解析.js文件? –
Spongman
仍然可以看到類似於函數和變量的推斷類型,所以引用.js的用例不需要編寫.d.ts文件。 –
沒錯,但是我的觀點是IMO從錯誤中推斷錯誤是沒有用的一些你沒有完全推斷出來的東西,目前的行爲意味着通常不可能引用現有的代碼。 – Spongman