給定文件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
,但這不起作用。
給定文件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
,但這不起作用。
你應該罰款與如下因素構成:
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
出口=語法指定從 模塊導出的單個對象。這可以是類,接口,名稱空間,函數或枚舉。
從https://www.typescriptlang.org/docs/handbook/modules.html
所以,現在你導出空類。
嘗試文件A.ts:
interface B {};
export = B;
和文件C.ts:
import B = require("./A");
var c: B;
謝謝你,但在這個問題說,我不能遠離CommonJS的進口系統中移動(即'要求')。我需要一種方法使其工作而不改變我的導入風格。 – Ludwik
我使用'.A'語法中的'import {A},沒有任何項目定位問題commonjs - 爲什麼不能使用它? – Amid
因爲我輸入的文件大部分都是使用'module.exports',並且改變它們太麻煩了,所以它們是可接受的打字稿模塊。 – Ludwik