使用 CommonJS Require 导出 TS 类型

Export TS Types with CommonJS Require

给定文件 A.ts:

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

更新

你也可以这样写定义文件:

A.d.ts

interface B 
{
    SomeProperty: number;
}

C.ts

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

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

The export = syntax specifies a single object that is exported from the module. This can be a class, interface, namespace, function, or enum.

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

所以现在您导出空 class。

尝试文件 A.ts:

interface B {};
export = B;

和文件 C.ts:

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