2015-08-24 189 views
0

如同在TypeScript中与ES6 + system.js一起创建一个声明类.d.ts,其中描述的类可以用于扩展自定义类?TypeScript + ES6 + .system.js + d.td +扩展

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

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(); 
    } 
} 
+0

它肯定会从'some.js''导入{SomeSuperClass}并且导出默认类Test TestExtensionClass {...}和'Test Test.ts'',但我不会'不知道TS想要做什么注释。 – Bergi

+0

@Bergi:'从'some.js''导入{SomeSuperClass} ==='错误TS1192:模块''some.js''没有默认导出。“ – oei

+0

这没有任何意义 - ”{SomeSuperClass}“不是默认导入。 TS使用ES6模块语法,对吧? – Bergi

回答

1

你有一些问题,你FIL ES:

  • 你要出口一些模块能够导入它,你在test.ts
  • 一些test.ts使用“默认”导入格式的导入进口它。你应该使用隐式格式。 {}一些
  • 你忘了你的main.ts导入测试(在这里,您使用的“默认”导入/导出)

这里是因为他们应该已被写入文件:

一些.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(); 
    } 
}