В настоящее время у меня есть большая база кода, разработанная с помощью CoffeeScript, и вы хотите расширить ее с помощью некоторого TypeScript.Расширьте класс CoffeeScript, загруженный RequireJS внутри кода TypeScript
Скажем, у меня есть следующий код в файле 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>
Я хочу расширить код CoffeeClass
с помощью кода типа TypeScript. Это то, что я пробовал:
Первая запись файла в 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
(насколько я ок n сказать, что компилятор не может понять, что CoffeeClass
действительно класс, а не только модуль).
Так я могу сказать машинописи компилятор, модуль является класс здесь? Если нет, как бы вы порекомендовали мне изменить дизайн CoffeeClass
, чтобы расширить его от кода TypeScript и не потерять все виды безопасности?