javascript - typescript關於接口,對象字面量額外屬性檢測問題,為什麼使用斷言或變數時就不會檢測額外屬性?
習慣沉默
習慣沉默 2017-06-30 09:52:24
0
2
579
interface SquareConfig {
    color?: string;
    width?: number;
}

function createSquare(config: SquareConfig): { color: string; area: number } {
    // ...
}

let mySquare = createSquare({ colour: "red", width: 100 });

ts編譯這段程式碼時會拋錯,但是使用以下兩種方式就不會拋錯,這是什麼原理?官網的解釋讓我無法理解,只會讓我覺得ts語法好隨便...

let mySquare = createSquare({ width: 100, opacity: 0.5 } as SquareConfig);

let squareOptions = { colour: "red", width: 100 };
let mySquare = createSquare(squareOptions);

這樣都不會報錯,使用斷言的時候(as/<>)是會依照什麼規則比照介面嗎?然後將物件字面量複製給變量,我知道這是物件的一個引用指針,但是這樣為什麼就不會檢測額外的屬性了呢?官網位址

習慣沉默
習慣沉默

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!