2016-08-18 71 views
0

給定文件A.ts:出口TS類型與CommonJS的要求

interface B {}; 
export = {}; 

和文件C.ts:

import A = require("./A"); 
var c: B; // Typescript error: Cannot find name 

我如何在A.ts聲明的接口中C.ts可見同時仍然使用CommonJS導入樣式(即require?我試過var c: A.B,但這不起作用。

回答

1

你應該罰款與如下因素構成:

A.ts

export interface A 
{ 
    SomeProperty: number; 
} 

C.ts

import { A } from './A'; 

var x: A = {SomeProperty: 123}; //OK 
var x1: A = {OtherProperty: 123}; //Not OK 

UPDATE

你也可以去寫作定義文件像這樣:

A.d.ts

interface B 
{ 
    SomeProperty: number; 
} 

C.ts

/// <reference path="A.d.ts" /> 

var c: B; 
c.SomeProperty; //OK 
+0

謝謝你,但在這個問題說,我不能遠離CommonJS的進口系統中移動(即'要求')。我需要一種方法使其工作而不改變我的導入風格。 – Ludwik

+0

我使用'.A'語法中的'import {A},沒有任何項目定位問題commonjs - 爲什麼不能使用它? – Amid

+0

因爲我輸入的文件大部分都是使用'module.exports',並且改變它們太麻煩了,所以它們是可接受的打字稿模塊。 – Ludwik

0

出口=語法指定從 模塊導出的單個對象。這可以是類,接口,名稱空間,函數或枚舉。

https://www.typescriptlang.org/docs/handbook/modules.html

所以,現在你導出空類。

嘗試文件A.ts:

interface B {}; 
export = B; 

和文件C.ts:

import B = require("./A"); 
var c: B;