2017-07-14 3 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

2つの問題があります。

最初に、color属性を除外する場合は、オプションとしてマークする必要があります。

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

第2に、オブジェクト表記:を使用しなければならず、等しくない。

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 
    }; 
} 
関連する問題