2015-08-24 190 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(); 
    } 
}