2016-03-15 73 views
2

我有一个接口,这样定义:打字稿Angular2界面 “找不到名称[InterfaceName中]”

import {AppBuild} from '../models/app-build.model' 

export interface Build { 
    "Name": string 
    "Builds"?: Array<AppBuild> 
} 

在我的部分,我已经导入它:

import {Build} from '../../models/build.model' 

但是,当我试图声明一个变量作为Build

build:Build; 
build.Name = "Hi"; 

我得到Cannot find name 'Build'.

为什么会发生这种情况?

这里是一个全功能是否有帮助:

let build:Build = new Build(); 
build.Name = "Hi"; 
console.log(buildNumber) 
let tempBuildArray = new Array<Build>(); 

return build; 

回答

0

你可能错过了“让”或“无功”的关键字,并希望写变量的声明是这样的:

let build: Build; 
//...Initialize your build variable with value here 
build.Name = "Hi"; 

[编辑]

如果你坚持让'Build'作为接口,你可以这样初始化它:

let build: Build; 
build = {Name: '123'}; 
build.Name = "Hi"; 

或者你可以把它变成类:

export class Build 
{ 
    public Name: string; 
    public Builds: Array<AppBuild>; 

    constructor(name: string) 
    { 
     this.Name = name; 
    } 
} 

及更高版本:

let build: Build; 
build = new Build('123'); 
build.Name = "Hi"; 

希望这有助于。

+0

它似乎没有奏效。添加'let'使得这个部分不再被高亮显示,但是现在我得到了'不能设置undefined'的属性'Name'。我尝试设置'build:Build = new Build()',但它告诉我它不知道'Build()'是什么。我很茫然。 –

+0

检查我的更新 – Amid

0

你不能“新建”一个接口。这是你在这条线上遇到的问题;

let build:Build = new Build(); <---- 

只有类可以实例化。所以你必须创建一个“实现”Build界面的类,如下所示;

export class BuildImp implements Build 
{ 
    public Name: string; 
    public Builds: Array<AppBuild>; 

    constructor(name: string) 
    { 
     this.Name = name; 
    } 
} 

所以你的代码看起来像这样;

let build:Build = new BuildImp(); // <-- use BuildImp 
build.Name = "Hi"; 
console.log(buildNumber) 
let tempBuildArray = new Array<Build>(); 

return build;