2015-12-05 109 views
0

我曾嘗試下面的代碼的那些從打字稿編譯沒有錯誤:當構造函數接受不同的參數類型,從實現的接口

interface IRectangle { 
    height: number; 
    width: number; 
    getArea:()=>number; 
} 

module Shapes { 
    export class Rectangle implements IRectangle { 
     constructor(public height, public width) { 
     } 

     getArea() { 
      return this.width * this.height; 
     } 
    } 
} 

console.log(new Shapes.Rectangle(12, 'a').getArea()); 

我期待,試圖當打字稿編譯器應該給我一個錯誤爲構造函數提供一個字符(最後一行代碼)甚至難以接口(IRectangle)說這兩個字段都應該是數字類型。但我沒有收到任何錯誤。爲什麼背後的原因是?

回答

2

如果你想打字稿編譯器看到這個錯誤,你可以宣佈你的構造類似的構造(公衆高度:數量,公共寬度:數)

要理解,爲什麼它不會在你的例子做有是一個很好的解釋here

and here在類的靜態端和實例端有一個重要的區別。希望有所幫助。

+0

感謝您強調靜態和實例之間的區別,現在它是有道理的。 – Marius

相關問題