我正在使用Angular构建一个项目,我使用Angular cli启动了该项目,当我try 运行ng build --prod时,我不断遇到以下错误:

类型对象上不存在属性"description"

生成此错误的代码如下所示:

export class AppComponent {
    product: Object = {};

    constructor(
        private store: StoreService,
        private request: RequestService,
    ) {
        this.product = this.request.getProduct(_id);
    }
}

<p>{{product.description}}</p>

我读了一些关于这个的内容,错误是因为我使用类型定义将产品定义为对象,但我没有传递任何属性定义.

我知道我可以定义一个接口,就像我对数组所做的那样,但我没能做到.我不知道我是不是定义错了,我就是这样try 的:

export interface ProductInterface {
    id: Number;
    description: String;
    title: String;
}

product: Object<ProductInterface> = {};

但它也给了我错误.我需要做什么来避免这种情况?

推荐答案

第一个例子.在html中,您说产品具有属性描述(它在类型对象上没有属性描述)

在你的第二个例子中.您最初将产品定义为空对象

product: ProductInterface = {};

缺少接口的必需字段.所以你可以移除初始化,留下

product: ProductInterface;

Also as others have noted, you do not need the Object<> syntax

Typescript相关问答推荐

使用新控制流的FormArray内部的Angular FormGroup

APP_INITIALIZER—TypeError:appInits不是函数

无法将select选项的值设置为ngFor循环中的第一个元素

如何访问Content UI的DatePicker/中的sx props of year picker?'<>

如何使用泛型自动推断TS中的类型

Vue3 Uncaught SyntaxError:每当我重新加载页面时,浏览器控制台中会出现无效或意外的令牌

在列表的指令中使用intersectionObservable隐藏按钮

从子类集合实例化类,同时保持对Typescript中静态成员的访问

在React中定义props 的不同方式.FunctionalComponent

从route.参数获取值.订阅提供";无法读取未定义";的属性

界面中数组中的混合类型导致打字错误

使用或属性编写无限嵌套的接口

Typescript将键数组映射到属性数组

是否可以定义引用另一行中的类型参数的类型?

打字:注解`是字符串`而不是`布尔`?

换行TypeScript';s具有泛型类型的推断数据类型

通过函数传递确切的类型,但验证额外的字段

如何根据Typescript 中带有泛型的对象嵌套键数组获取数组或对象的正确类型?

React-Router V6 中的递归好友路由

是否可以使用元组中对象的键来映射类型