2016-02-18 33 views
2

說我有具有以下聲明文件user.ts:聲明接口

export interface User { 
    userName: string; 
} 

我想導入另一個TS腳本這個接口,但是由於JavaScript不支持接口transpiler不會產生user.js,我在導入時遇到錯誤。

當然,我可以將User聲明爲類作爲解決方法,但是有沒有辦法在單獨的TypeScript文件中聲明接口?

+0

什麼擴展的呢用戶文件有?它應該是純粹的接口文件.d.ts。 – toskv

+0

我剛剛.ts。將嘗試與d.ts,謝謝。 –

+1

更新。該界面可以位於一個單獨的文件,如user.ts.我使用SystemJS來加載和編譯我的代碼。我遇到的問題是由於SystemJS不知道生成的空user.js是爲了作爲模塊而使用的。添加在SystemJS配置以下後,開始代碼工作罰款: 元:{ 「user.ts」:{ 格式:「ES6」 }當我在命令行中使用TSC –

回答

12

您可以嘗試使用戶文件具有.d.ts擴展名。

例如:

user.d.ts

export interface User { name: string }

,也可以將它像往常一樣:

someotherfile.ts

import {User} from './user'; 

function check(user: User) { 
    if (user.name) { 
     console.log('yeey works'); 
    } 
} 

check({ name: 'ion' }); 
+0

此代碼工作正常。但在我的應用程序中,我使用SystemJS加載程序即時編譯代碼。它給我以下錯誤: (程序):1未捕獲SyntaxError:意外的令牌導出 –

+0

uhm。你能用你正在使用的SystemJS配置更新你的問題嗎? :) – toskv

+1

其實問題似乎是在其他地方:( 我得到你的例子與SystemJS以及 事情是,我在Angular 2應用程序中使用此代碼,它不喜歡導出關鍵字。讓我多研究一下。 謝謝你的幫助! –