目前我有一個用CoffeeScript開發的大型代碼庫,並且希望用一些TypeScript擴展它。在TypeScript代碼中擴展裝有RequireJS的CoffeeScript類
比方說,我在CoffeeClass.coffee
文件下面的代碼:
define 'CoffeeClass', ->
class CoffeeClass
foo:() -> 1
它的目的是要通過require
以下方式加載(我們稱之爲文件CoffeeUser.coffee
):
require ['CoffeeClass'], (CoffeeClass) ->
class MyClass extends CoffeeClass
foo:() -> super() + 1
console.log (new MyClass().foo()) # => 2
現在它可以用標準RequireJS標記在瀏覽器中加載:
<script data-main="CoffeeUser.js" src="require.js"></script>
我想從TypeScript代碼擴展CoffeeClass
。這就是我已經試過:
先寫一個CoffeeClass.d.ts
definiton文件(我知道這是錯誤的,但它顯示我想要實現):
export class CoffeeClass {
foo(): number;
}
,然後嘗試從TypeScriptUser.ts
使用:
import CoffeeClass = require('CoffeeClass');
class TypeScriptUser extends CoffeeClass {
foo(): number {
return super.foo() + 1;
}
}
但它不會編譯部分,因爲我無法找到正確的語法爲d.ts
文件,部分原因是因爲我不能正確地告訴編譯器如何將CoffeeClass
(據我CA擴展ñ告訴編譯器不能理解CoffeeClass
真的是一個類而不只是一個模塊)。
所以我可以告訴打字稿編譯器模塊是類在這裏?如果不是,你會如何推薦我更改CoffeeClass
設計,以便將其從TypeScript代碼擴展並且不會丟失所有類型的安全性?