Как правильно расширить класс с помощью TypeScript в NodeJS?

Я хочу использовать TypeScript в среде NodeJS. Поскольку я абсолютно новичок в TypeScript, я не уверен, как правильно расширять классы с помощью системы модулей NodeJS.


Я хочу расширить свой класс Champion с помощью GameObject.

GameObject.ts

///<reference path="../../typings/node/node.d.ts"/>

class GameObject {
    id:number;
    name:string;
}

module.exports = GameObject; 

Чемпион.тс

///<reference path="../../typings/node/node.d.ts"/>
///<reference path="Image.ts"/>
///<reference path="GameObject.ts"/>


class Champion extends GameObject {
    // ...
}

module.exports = Champion;

Пока это не вызывает ошибок компиляции.

Теперь я хочу создать экземпляр моего чемпиона. Это то, что я пробовал

// I tried referencing the Champion.ts which haven't changed anything
var Champion = require('../api/types/Champion');
var c = new Champion();

Мой Champion.js теперь выдает следующую ошибку:

ReferenceError: GameObject не определен

Поэтому я подумал, что мне нужно require('GameObject') в Champion.ts, чтобы запустить мое приложение. Но я получаю другую ошибку.

Либо я ссылаюсь и require мой GameObject

///<reference path="GameObject.ts"/>
var GameObject = require('./GameObject');
class Champion extends GameObject {

Что дает мне ошибку

Повторяющийся идентификатор GameObject

Или я просто require и получаю

Тип any не является типом функции-конструктора

Версия TypeScript

$ tsc -v
message TS6029: Version 1.6.2

person boop    schedule 15.11.2015    source источник


Ответы (1)


Вместо использования module.exports = GameObject; с var/require используйте import/require

Это обеспечит безопасность типов на стороне импорта. Они называются файловыми модулями и задокументированы здесь: https://basarat.gitbooks.io/typescript/content/docs/project/modules.html

person basarat    schedule 15.11.2015