TypeScript + ES6 + .system.js + d.td + extends

时间:2015-08-24 16:51:40

标签: typescript ecmascript-6

与TypeScript结合使用ES6 + system.js来创建声明性类.d.ts,其中描述的类可以用于扩展自定义类吗?

或者解释一下这个问题,如何使这段代码有效?

some.d.ts

declare module SOME {
    export class SomeSuperClass{
        constructor();
        execute();
    }
    export class SomeSubClass{
        constructor();
        execute();
    }
}

declare module 'some.js' {
    export = SOME;
}

main.ts

export class Main {
    constructor() {
        console.log('typescript main ');
        new Test();
    }
}

test.ts

import SOME from 'some.js';

export default class Test extends SOME.SomeSuperClass{
    constructor() {
        super();
    }
}

1 个答案:

答案 0 :(得分:1)

您的文件存在一些问题:

  • 您必须导出SOME模块才能导入它,您在test.ts中导入它
  • 在test.ts中导入SOME使用"默认"导入格式。你应该使用隐式格式。 {SOME}
  • 您忘了在main.ts中导入Test(这里您使用的是"默认"导入/导出)

以下是应该写的文件:

some.d.ts

export module SOME {
    export class SomeSuperClass{
        constructor();
        execute();
    }
    export class SomeSubClass{
        constructor();
        execute();
    }
}

main.ts

import Test from 'test';

export class Main {
    constructor() {
        console.log('typescript main ');
        new Test();
    }
}

test.ts

import {SOME} from 'some';

export default class Test extends SOME.SomeSuperClass{
    constructor() {
        super();
    }
}