当前位置: 首页 > 知识库问答 >
问题:

如何在单独的文件中声明和导入typescript接口

子车青青
2023-03-14

我想在我的基于打字稿的项目中,在它们自己的文件中定义几个接口,我将从它们中实现用于生产的类以及用于测试的模拟。但是,我不知道正确的语法是什么。我找到了很多关于声明接口和实现它们的教程,但是它们都在同一个文件中实现了接口和派生类,这不是很真实。导出和导入接口的正确方法是什么?

共有3个答案

戚正业
2023-03-14

在不扩展多个导出的情况下,您可以将它们分组到一个export{}块中(在这种情况下,不应声明任何文件默认type):

// interfaces.ts
interface IWords {
  [key: string]: string; 
}

interface INumbers {
  [key: string]: number; 
}

interface IBooleans {
  [key: string]: boolean; 
}

interface IValues {
  [key: string]: string | number; 
}

interface IStructures {
  [key: string]: INumbers | IBooleans | IValues;
}

export {
  // not exporting IWords | INumbers
  IBooleans,
  IValues,
  IStructures,
}
import { IBooleans, IValues, IStructures } from 'interfaces';

const flags: IBooleans = { read: true, write: false, delete: false };

const userFile: IValues = { user: 1, username: 'One', file: 'types.txt' };

const userContext: IStructure = {
  file: userFile,
  permissions: flags,
  counts: { views: 3, writes: 1 } // => INumbers (lint: try to remove IValues from IStructures)
};
万嘉石
2023-03-14

使用定义d.ts) 文件和命名空间,无需以这种方式导入/导出模块。DefinitelyTyped项目有指导和大量示例如何做到这一点。

田兴旺
2023-03-14

您需要从定义的文件中导出接口,并将其导入到您想使用它的任何地方。

IfcSampleInterface.ts中:

export interface IfcSampleInterface {
   key: string;
   value: string;
}

SampleInterface.ts

import { IfcSampleInterface } from './IfcSampleInterface';
let sampleVar: IfcSampleInterface;
 类似资料:
  • 主要内容:CalcThirdPartyJsLib.js 文件代码:,Calc.d.ts 文件代码:,CalcTest.ts 文件代码:,CalcTest.js 文件代码:,实例TypeScript 作为 JavaScript 的超集,在开发过程中不可避免要引用其他第三方的 JavaScript 的库。虽然通过直接引用可以调用库的类和方法,但是却无法使用TypeScript 诸如类型检查等特性功能。为了解决这个问题,需要将这些库里的函数和方法体去掉后只保留导出类型声明,而产生了一个描述 JavaS

  • 我的TypeScript项目中有一个声明文件,如下所示: 这很好用,我可以在项目中的任何地方使用这个名称空间,而无需导入它。 我现在需要从第三方模块导入一个类型并在我的环境声明中使用它: 编译器现在抱怨它找不到名称空间“MyApp”,可能是因为导入阻止了它处于环境中。 是否有一些简单的方法可以在使用第三方类型的同时保留声明的环境性?

  • 我得到“只有void函数可以用'new'关键字调用”。我知道关键字在声明文件中是有效的,例如: 这只是导出一个类型,正如编译器所说:“只引用一个类型,但在这里被用作值”。 我不能在这里使用类,因为API可以通过来自其他文件的插件进行扩展,类型声明合并在类上不起作用(我希望其他文件添加的方法也能够通过它们自己的键入文件进行键入)。 我不知所措-有什么主意吗?

  • 问题内容: 我有一个如下文件: 我正在尝试将其导入文件。为此,我将其添加到类型定义中: 我正在这样导入。 在文件中,我将颜色用作。但是我得到一个错误: 属性’primaryMain’在类型’typeof“ * .json”上不存在 问题答案: 导入表单和模块声明需要就模块的形状,导出的内容达成一致。 编写时(自TypeScript 2.9导入JSON时,针对兼容模块格式的一种次佳实践, 请参见no

  • 问题内容: 我正在使用Angular Maps构建地图应用程序,并希望导入JSON文件作为定义位置的标记列表。我希望将此JSON文件用作app.component.ts中的marker []数组。而不是在TypeScript文件中定义标记的硬编码数组。 导入此JSON文件以在我的项目中使用的最佳过程是什么?任何方向都非常感谢! 问题答案: 直到最近的打字稿更新之前,Aonepathan的单行代码都

  • 问题内容: 更新资料 无需导入。相反,我需要添加对文件顶部的引用。所以我的WebAPI.js的第一行应该是 我正在尝试导入jQuery以在Typescript文件中使用,但是我尝试的所有操作都收到各种错误。我在这里和这里都遵循了解决方案,但是没有任何运气。 tsconfig.json WebAPI.js 我也尝试过 失误 问题答案: 不需要导入。而是在文件顶部添加对Typescript定义文件的引