2016-03-23 62 views
2

使用tsc 1.8.9 ...爲什麼這些導入不起作用?我認爲TypeScript實現了ES6模塊語法?使用TypeScript默認導入

「類/ person.ts」

export default class Person { 
    protected _name: string; 
    protected _language: string; 

    constructor(name: string) { 
     this._name = name; 

     this.hello(); 
    } 

    public hello() { 
     console.log("Hello, " + this._name); 
     console.log("Lang: " + this._language); 
    } 
} 

「類/ englishman.ts」

import Person from "person" 

export default class Englishman extends Person { 
    constructor(name: string){ 
     this._language = "en_GB"; 

     super(name); 
    } 
} 

「main.ts」

import * as $ from "jquery"; 
import Englishman from "classes/englishman"; 

let tom: Person = new Englishman("Tom"); 
console.log(tom); 


$("body").html(`<h1>TEST</h1>`); 

錯誤:

source/main.ts(2,24):錯誤TS2307:無法找到模塊 'classes/englishman'。 source/main.ts(4,10):錯誤TS2304:找不到 name'Person'。 [13時53分43秒] 打字稿:2個語義錯誤

回答

0

經過一些更改後,它在我的工作中,在ES5和ES6中測試。我希望能幫助你:

原始

  1. import Person from "classes/person";
  2. import Englishman from "classes/englishman";

更改測試

  1. import Person from './person';
  2. import Englishman from './classes/englishman';

也許你需要檢查你的目錄樹。

添加

  1. import Person from './classes/person';

import Person from './person'; //<-- change 

export default class Englishman extends Person { 
    constructor(name: string){ 
     this._language = "en_GB"; 

     super(name); 
    } 
} 

export default class Person { 
     protected _name: string; 
     protected _language: string; 

     constructor(name: string) { 
      this._name = name; 

      this.hello(); 
     } 

     public hello() { 
      console.log("Hello, " + this._name); 
      console.log("Lang: " + this._language); 
     } 
    } 

import Englishman from './classes/englishman'; //<-- change 
import Person  from './classes/person';  //<-- add 

class HelloWorld{ 
    public static main(){  

     let tom: Person = new Englishman("Tom"); 
     console.log(tom); 

    } 
} 
HelloWorld.main(); 

Hello, Tom 
Lang: en_GB 
Englishman { _language: 'en_GB', _name: 'Tom' } 
  • TSC版1.8.2
  • 節點V5.4。1
+0

完美!添加'。/'工作。我不知道爲什麼這應該是必要的,因爲我認爲從當前目錄開始是一個除非我們以'/'開頭......奇怪。 –

0

確保您使用ES6目標編制,如果我沒有記錯,ES5仍然是默認的目標。

+0

是的,我相信ES5是目標。我沒有使用Babel或另一個轉換器,所以我相信它應該保持ES5。 –