2016-03-15 71 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;