2017-08-09 61 views
-1

我正在使用Angular,並且遇到了使用TypeScript語言的困難。我不確定TypeScript語法。Angular和Typescript:實例化複雜對象

我不明白爲什麼我創建這樣一個對象:

export class MyClass { 

    isTrue: boolean; 

    complexObject: { 
    minValue: number; 
    stringValue: string; 
    }; 

    MyClassString: string; 
    MyClassString2: string; 
    MyClassString3: string; 

} 

我創建一個MyClass的數組是這樣的:

export const MYCLASS: MyClass[] = [ 
{ 
    isTrue: false, 
    complexObject: { 
    minValue: 7, 
    stringValue: "hello" 
    }, 
    MyClassString: "one", 
    MyClassString2: "two", 
    MyClassString3: "three" 
}]; 

的角度編譯器,使即使有錯誤在這段代碼中沒有語法錯誤。

如果我刪除「complexObject」,一切正常。 如果我只用原始類型創建實例,則不會有錯誤。 如何創建複雜對象並將它們初始化爲一個沒有編譯錯誤的數組?

只有在具有原始類型的情況下,纔可以使用此語法實例化對象嗎?

的錯誤是:對象文本只能指定已知特性,以及「complexObject」不存在類型存在「MyClass的」

+0

MyClass是一個類,但您試圖將其用作類型。 –

+1

@claudioz如果我把你的代碼放到[TS操場](http://www.typescriptlang.org/play/)中,我就不會出錯。一些舊版本的TS有bug。如果您使用的是舊版本,則應升級。否則,您需要在您的問題中添加詳細信息(通過*編輯*,而不是在其下面添加註釋),以便人們可以重現您遇到的實際問題。 – Louis

回答

-1

您可以定義常量像下面

export const MYCLASS:Array<MyClass>=[ 
    { 
    }, 
    { 
    } 
] 
+0

沒有用的答案,因爲他給出的代碼會毫無錯誤地進行編譯,所以無論他得到什麼樣的錯誤(他讓我們猜測它可能是什麼)都可能是由於其他代碼中沒有發佈的東西。 – Duncan

+0

錯誤代碼: 對象字面量只能指定已知屬性,'MyClass'類型中不存在'complexObject' – claudioz

0

我認爲這將是如果您以這種方式申報班級,效果會更好:

export class ComplexType { 
    minValue: number; 
    stringValue: string; 
} 

export class MyClass { 

    isTrue: boolean; 

    complexObject: ComplexType; 

    myClassString: string; 
    myClassString2: string; 
    myClassString3: string; 

} 
+0

在賦值 – claudioz

+0

@claudioz後,結果不會改變嗎?您可以編輯您的帖子並顯示錯誤消息你得到了? –

+0

錯誤在於:對象字面量可能只指定已知屬性,'myClass'類型中不存在'complexObject' – claudioz