首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型记录错误:是否缺少私有属性?

类型记录错误:是否缺少私有属性?
EN

Stack Overflow用户
提问于 2016-03-13 20:28:19
回答 1查看 5.9K关注 0票数 3

我有一个具有私有属性的类,但是当我尝试使用这个元素创建一个数组时,我会得到以下错误:

代码语言:javascript
复制
error TS2322: Type '{ "id": number; "totalTime": number; "team": { "id": number; "name": string; }; }[]' is not assignable to type 'Training[]'.
[0]   Type '{ "id": number; "totalTime": number; "team": { "id": number; "name": string; }; }' is not assignable to type 'Training'.
[0]     Property 'remainingTime' is missing in type '{ "id": number; "totalTime": number; "team": { "id": number; "name": string; }; }'

数组类:

代码语言:javascript
复制
import { TEAMS } from './mock-teams';
import { Training } from './training';

export var TRAININGS: Training[] = [ 
    {"id": 0, "totalTime": 60, "team": {"id": TEAMS[0]['id'], "name": TEAMS[0]['name'] } },
    {"id": 1, "totalTime": 60, "team": {"id": TEAMS[0]['id'], "name": TEAMS[0]['name'] } }
];

培训班:

代码语言:javascript
复制
export class Training {
    private remainingTime: number = 0;

    constructor(
        public id: number,
        public totalTime: number,
        public team?: Team) {
    }   
}

我不明白为什么打字稿抱怨一个私人财产,甚至不在构造函数中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-13 20:34:34

按照您的做法,您正在创建一个类型为Object[]的数组。您需要做的是调用如下所示的构造函数,告诉转换程序您正在创建一个培训对象:

代码语言:javascript
复制
import { TEAMS } from './mock-teams';
import { Training } from './training';

export var TRAININGS: Training[] = [ 
    new Training(0,60, {"id": TEAMS[0]['id'], "name": TEAMS[0]['name'] }),
    new Training(1,60, {"id": TEAMS[0]['id'], "name": TEAMS[0]['name'] })
];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35975405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档