我们在VS2012中创建一个typescript项目,并定义typescript的接口。然后我们添加接口的实现和一些业务逻辑来使用接口。在 VS 中,我们将项目编译为打字稿的定义文件。并且描述文件中存在编译错误,我们检查错误并罚款该接口不包含在项目的描述文件中。
我们的问题: 当我们将多个 TypeScript 文件编译成一个文件时,有没有办法将接口包含在 TypeScript 的描述文件中?
我们在VS2012中创建一个typescript项目,并定义typescript的接口。然后我们添加接口的实现和一些业务逻辑来使用接口。在 VS 中,我们将项目编译为打字稿的定义文件。并且描述文件中存在编译错误,我们检查错误并罚款该接口不包含在项目的描述文件中。
我们的问题: 当我们将多个 TypeScript 文件编译成一个文件时,有没有办法将接口包含在 TypeScript 的描述文件中?
也为您的接口声明文件使用 a.ts
而不是 a 。.d.ts
您可以在此处查看示例:https ://github.com/basarat/ts-test/tree/master/tests/compileToSingle
我的out.d.ts https://github.com/basarat/ts-test/blob/master/tests/compileToSingle/out.d.ts 包含来自 dec .ts的接口:https ://github.com/basarat /ts-test/blob/master/tests/compileToSingle/dec.ts
我的out.d.ts不包含接口:https ://github.com/basarat/ts-test/blob/34eeb54618e57765ea0e2f9ce0c48ebd7f46942a/tests/compileToSingle/out.d.ts 如果我有一个 dec。d.ts:https ://github.com/basarat/ts-test/blob/34eeb54618e57765ea0e2f9ce0c48ebd7f46942a/tests/compileToSingle/dec.d.ts
您可以将 declare 关键字用于仅声明的任何项目,即:
declare class C{
}
代替
class C{
}
接口将保持原样,并且不使用 declare 关键字。
根据您的问题,我做出以下假设。
--out
标志编译 TypeScript 以获取单个输出文件--declaration
标志生成定义如果是这种情况,您的界面应该出现在声明文件中。这是一个例子。
接口文件.ts
// Interface
interface IPoint {
getDist(): number;
}
实现文件.ts
/// <reference path="InterfaceFile.ts" />
// Module
module Shapes {
// Class
export class Point implements IPoint {
// Constructor
constructor (public x: number, public y: number) { }
// Instance member
getDist() { return Math.sqrt(this.x * this.x + this.y * this.y); }
// Static member
static origin = new Point(0, 0);
}
}
应用程序.ts
/// <reference path="ImplementationFile.ts" />
// Local variables
var p: IPoint = new Shapes.Point(3, 4);
var dist = p.getDist();
如果我使用以下命令编译此示例程序:
tsc --out mylib.js --declaration app.ts
我在 mylib.d.ts 中得到以下信息
interface IPoint {
getDist(): number;
}
module Shapes {
class Point implements IPoint {
public x: number;
public y: number;
constructor(x: number, y: number);
public getDist(): number;
static origin: Point;
}
}
var p: IPoint;
var dist: number;
我认为您两者都有<TypeScriptOutFile>something.js</TypeScriptOutFile>
,并<TypeScriptGeneratesDeclarations>true</TypeScriptGeneratesDeclarations>
在您的 csproj 文件中定义。从我的 TypeScript 版本 0.8.3.1(我假设是 0.9)开始,任何从包含文件(而不是在 .d.ts 文件中)引用的接口也将被包含在内。只需在其中一个文件中添加对缺少接口的引用并重新编译即可。引用不必在该文件中实际使用。