在角度中,如果我导入并分配数组常量,它不会被分配给类属性,为什么?


import { Component, OnInit } from '@angular/core';
import { HEROES} from './Models/HeroesArrays';

@Component({
selector: 'app-heroes',
templateUrl: './heroes.component.html',
styleUrls: ['./heroes.component.css']
})
export class HeroesComponent implements OnInit {
hero: HEROES;
constructor() {

}

错误:"HEROES"引用了一个值,但在此处被用作类型。你是说"英雄类型"吗?ts(2749(

import { Hero } from "../Interfaces/hero";
export const HEROES: Hero[]= [
{name: 'Baby1'},
{name: 'Baby2'},
];

正如@uminder的评论中所提到的,您必须使用"&quot-操作人员然后TypeScript自动知道,这个必须是Hero[]类型,因为导出的const是Hero]]类型。

如果你想明确显示它是这种类型的,你也可以写:hero: Hero[] = HEROES;

您分配的是一个值,您期望它是一个模型。有一点不同。

模型:您可以定义变量的类型,但不能定义值

值:您直接定义它的值,因此不能将其作为模型;

看看这个例子:

1) If you want a model, use the 'interface' feature given by typescript
export interface LoginDetails {
userId?: string;
password?: string;
age?: number;
}
// How you use this in your component: 
import { LoginDetails } from './your/correct/path';
userDetails: LoginDetails; // Here you are defining the type
*****************************************************
2) How to use a value: 
export const UserDetails = {
userID: 'someUserId',
password: 'somePassword',
age: 20
};
// How to use in your component: 
import { UserDetails } from './your/correct/path';
predefinedUserDetails = UserDetails; // Here you are assigning the value

此代码语法允许您定义英雄变量的类型,但不设置值hero: HEROES;

要设置值,您必须使用以下代码

hero = HEROES;

最新更新