使用 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;
给定文件 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;