2017-07-14 74 views
1

最近我一直在使用OO進行實驗,並試圖聲明一些泛型類。聲明默認值的語法

我想擴展一個類,並在類本身內部聲明默認值,但我遇到了語法錯誤。

爲什麼我的財產只能在這種情況下閱讀?

export interface Heading { 
     size: number; 
     color: number; 
    } 

    export class text { 
     size: number; 
     color: number; 
    } 

    export class Document extends text { 
     H1: Heading = { 
     size = 1 // syntax error - Cannot assign to 'Number' because it is a constant or a read-only property. 
     }; 
    } 

回答

2

您有兩個問題。

首先,color屬性必須標記爲可選,如果您要排除它。

export interface Heading { 
    size: number; 
    color?: number; 
} 

其次,您必須使用對象表示法:而不是等於。

export class Document extends text { 
    public H1: Heading = { 
     size: 1 
    }; 
} 
1

如果你希望你的文件有大小和顏色的默認值,因爲它們出現在擴展類text你應該寫的值:

export class Document extends text { 
    size = 1; 
    color = 1; 
} 

順便問一下,你的代碼有一個問題:

TypeScript編譯器真的說H1缺乏顏色屬性。所以,你要麼它添加到您的類

export interface Heading { 
    size: number; 
    color: number; 
} 

export class text { 
    size: number; 
    color: number; 
} 

export class Document extends text { 
    H1: Heading = { 
    size: 1, 
    color: 1, 
    }; 
} 

或將可選?操作:

export interface Heading { 
    size: number; 
    color?: number; 
} 

export class text { 
    size: number; 
    color: number; 
} 

export class Document extends text { 
    H1: Heading = { 
    size: 1 
    }; 
}