在我的角度应用程序中,我想以下面的方式使用id和role的对象数组
let userRole: Array<...> = [
{ id: 1, name: 'Admin' },
{ id: 2, name: 'Super Admin' },
{ id: 2, name: 'User' },
{ id: 2, name: 'Watcher' }
];
但我很困惑需要填补哪些 ... ?
Array < Object >
或Array <Any>
试用1:
var role = {
id: number;
name: string;
};
然后Array <role>
,但它会出错
试用2:添加不同的类文件
export class Role {
constructor(
public id: number,
public name: string
) { }
}
并将我的文件添加为
import { Role } from './role';
export class HeroFormComponent {
let userRole: Array<Role> = [
{ id: 1, name: 'Admin' },
{ id: 2, name: 'Super Admin' },
{ id: 2, name: 'User' },
{ id: 2, name: 'Wacher' }
];
但是给出错误
错误:SyntaxError:意外的严格模式保留字
答案 0 :(得分:5)
您的第一个也是最好的选择就是没有类型注释:
let userRole = [
{ id: 1, name: 'Admin' },
{ id: 2, name: 'Super Admin' },
{ id: 2, name: 'User' },
{ id: 2, name: 'Watcher' }
];
userRole
的推断类型为Array<{ id: number, name: string }>
。
如果您因任何原因确实需要类型注释,可以编写
let userRole: { id: number, name: string }[] = [ ...
或
let userRole: Array<{ id: number, name: string }> = [ ...
这两种语法在行为上是相同的。
如果你要经常使用这种类型,你可能想为它创建一个界面,这样你就可以在其他地方重复使用这个名字:
interface Role {
id: number;
name: string;
}
现在你可以写
了let userRole: Role[] = [ ...
在类中声明初始化字段时,不要使用var
或let
:
export class HeroFormComponent {
userRole = [
{ id: 1, name: 'Admin' },
{ id: 2, name: 'Super Admin' },
{ id: 2, name: 'User' },
{ id: 2, name: 'Wacher' }
];
再次在这里,您可以选择您想要的类型注释。