我有以下类结构
module ChartingServices { export class ChartOptions { options: myOptions; title: string; } export interface myOptions { colors: string[]; legend: myLegend; type: string; } export interface myLegend{ enabled: boolean; labelFormatter: string; } }
我以通常的方式创建它的实例: -
var chartOptions = new ChartingServices.ChartOptions();
我可以设置属性chartOptions.title完全没有问题.
但是,我无法访问属性chartOptions.myOptions.type并获得有关无法读取未定义的属性"类型"的错误.
记住我有很多类,我是否需要创建每个类的实例来设置/读取属性.我该怎么做才能让代码工作?
第一个问题是.myOptions
不存在chartOptions
- 你想要的options
.您应该将所有类型都大写:MyOptions
,MyLegend
以便不要将它们与属性名称混淆.
第二个问题是虽然你实例化了一个新的ChartOptions
:
var chartOptions = new ChartOptions();
......它的options
属性实际上并没有设置为任何东西,因此未定义.您需要在实例化后立即使用语句设置它:
chartOptions.options = {type: "foo", ...other non-optional properties here}
或者在构造函数中ChartOptions
,或者通过:
options: MyOptions = {type: "foo", ...}