2017-08-09 115 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