有没有什么方法可以使用Typescript来转换或更改对象的定义?

时间:2014-09-19 15:43:35

标签: javascript typescript

我有一个javascript变量:

var home.modal.data;

在内容屏幕中,它包含:

home.modal.data.contentStatusId: number;
home.modal.data.contentTypeId: number;

在考试屏幕中,它包含:

home.modal.data.examId: number;
home.modal.data.examStatusId: number;

我正在考虑这样的界面:

interface IModalData {
    contentStatusId: any;
    contentTypeId: any;
    current: any;
    examId: any;
    examStatusId: any;
}

但我认为这是错误的解决方法,因为我需要定义未使用的属性,这给了我其他问题。

还有其他方法我可以声明home.modal.data的组成是针对每个屏幕的吗?如果这个问题听起来令人困惑,我很抱歉,但我确实看到了一些方法 使用<>括号语法做这样的事情,但现在我找不到任何例子。

我知道有一种方式可以让我宣布:

var home.modal.data: any

但是有更好的方法吗?

2 个答案:

答案 0 :(得分:3)

这对你有用吗<​​/ p>

首先定义以下接口:

interface IExamData{
    examId: number;
    examStatusId: number;
}


interface IContentData{
    contentStatusId: number;
    contentTypeId: number
}

现在,只要您需要访问考试屏幕或内容屏幕的数据,具体取决于您可以按如下方式进行投射:

在考试屏幕中:

var examData = <IExamData>home.modal.data;
examData.examId = 666;
examData.examStatusId = 777;

在内容屏幕中:

var contentData = <IContentData>home.modal.data;
contentData.contenStatusId = 666;
contentData.contentTypeId = 777;

答案 1 :(得分:0)

&lt;&gt;括号语法与泛型有直接关系。

请参阅generics and typescript

上的此文档