打字稿:无法声明接口

     2023-03-13     172

关键词:

【中文标题】打字稿:无法声明接口【英文标题】:typescript: cant declare an interface 【发布时间】:2021-02-06 06:33:27 【问题描述】:

我正在使用 typescript,但无法使用另一个文件中声明的接口。 我的global.d.ts 看起来像这样。

declare interface IPropSendEmail 
    from: string,
    to: string,
    subject: string,
    html: string,

下面是tsconfig.json


    "compilerOptions": 
        "target": "es6",
        "module": "commonjs",
        "outDir": "./build",
        "esModuleInterop": true,
        "declaration": true,
        "strict": true,
        "typeRoots": [
            "types"
        ],
    

目录结构如下所示

    | -- src
            |-- types
                     |-- global.d.ts
            |-- util
                     |-- common.ts
            |-- ...

common.ts 文件中使用它

export async function sendEmail( from, to, subject, html : IPropSendEmail) 
     // function code here
     ...

【问题讨论】:

这对我们来说信息不足,请提供更多上下文(例如,还有什么文件,您打算如何使用它等)。 【参考方案1】:

它应该工作。但是,我建议清理配置中奇怪的部分:

在你的tsconfig.json:

删除typeRoots; 添加include

    "compilerOptions": 
        "target": "es6",
        "module": "commonjs",
        "outDir": "build",
        "esModuleInterop": true,
        "declaration": true,
        "strict": true
    ,
    "include": ["src"]

global.d.ts中,关键字declare是没用的:

interface IPropSendEmail 
    from: string,
    to: string,
    subject: string,
    html: string,

确保此文件中没有exportimport

【讨论】:

感谢 tsconfig.json 的回复和建议。我使用了declare,这样我就可以在任何文件中使用interface 而无需导入它。我以前用过,只是现在没有那个配置。 @mkamranhamid 尝试删除它(declare 关键字)。它会以同样的方式工作。 我想你指的是@Andris 的this。这是一个非常详细的答案,说明为什么使用 declare 是一种不好的做法。 @mkamranhamid 不,我是说关键字declare 对界面没有用处。 然后呢?你是说我应该使用export 以便interfacecommon.ts 中对import 可用

如何在打字稿中组织我的类型/接口声明?

】如何在打字稿中组织我的类型/接口声明?【英文标题】:HowdoIorganisemytypes/interfacesdeclarationsintypescript?【发布时间】:2019-04-0805:07:53【问题描述】:我对typescript有点陌生,其中让我有点困惑的是类型/接口声明。我正在编写一个... 查看详情

打字稿函数接口

】打字稿函数接口【英文标题】:TypescriptFunctionInterface【发布时间】:2013-01-2615:40:08【问题描述】:为什么Typescript没有警告我我定义的函数与接口声明不匹配,但如果我尝试调用该函数,它会警告我。interfaceIFormatter(data:string,toU... 查看详情

如何在打字稿中声明全局变量[重复]

】如何在打字稿中声明全局变量[重复]【英文标题】:HowtodeclareaGlobalVariableintypescript[duplicate]【发布时间】:2021-02-1710:27:33【问题描述】:我继承了一个Typescript项目(有.ts),但我呢?似乎无法锻炼如何在Typescript文件中创建全局... 查看详情

打字稿:为啥类型别名满足约束但相同的接口不满足?

】打字稿:为啥类型别名满足约束但相同的接口不满足?【英文标题】:Typescript:Whytypealiassatisfiesaconstraintbutsameinterfacedoesn\'t?打字稿:为什么类型别名满足约束但相同的接口不满足?【发布时间】:2021-03-1617:33:20【问题描述】:... 查看详情

如何将 Storybook 打字稿元声明转换为 MDX?

】如何将Storybook打字稿元声明转换为MDX?【英文标题】:HowdoyouconvertaStorybooktypescriptmetadeclarationtoMDX?【发布时间】:2021-08-3019:12:19【问题描述】:我有一个typescript组件的工作故事文件,但业务需求需要一些额外的README样式文档。... 查看详情

如何在打字稿中对模型接口进行单元测试?

】如何在打字稿中对模型接口进行单元测试?【英文标题】:Howtounittestmodelinterfacesintypescript?【发布时间】:2018-09-2903:04:46【问题描述】:exportinterfaceUsername:string;如何对上述接口进行单元测试,以便Karma可以在代码覆盖率报告中... 查看详情

无法进入 json 导致打字稿反应

】无法进入json导致打字稿反应【英文标题】:Can\'tgoinsideofjsonresultsintypescriptreact【发布时间】:2021-06-1103:38:16【问题描述】:我是第一次使用打字稿。我做了两个页面,详细页面正在获取口袋妖怪的所有详细信息。但是当我想进... 查看详情

使用声明文件打字稿

】使用声明文件打字稿【英文标题】:Usingdeclarationfiletypescript【发布时间】:2017-02-1605:24:52【问题描述】:您好,我在我的typescript项目中使用声明文件时遇到问题。声明文件如下://TypedefinitionsforDropzone4.3.0//Project:http://www.dropzone... 查看详情

找不到打字稿类型声明

】找不到打字稿类型声明【英文标题】:TypescriptTypesdeclarationnotfound【发布时间】:2022-01-0611:36:54【问题描述】:当我在类型声明文件中遇到问题时,我正在使用TypeScript编写一个小型Discord机器人。index.d.ts:declaremodule\'configuration\... 查看详情

合并/检索打字稿声明文件

】合并/检索打字稿声明文件【英文标题】:Combine/retrievetypescriptdeclarationfiles【发布时间】:2016-11-1906:42:32【问题描述】:我有一个TypeScripttypingsproject包含几个*.d.ts文件。这是一组“全局”声明(即命名模块)。我使用类型将声... 查看详情

如何在打字稿中声明函数类型

】如何在打字稿中声明函数类型【英文标题】:Howtodeclareafunctiontypeintypescript【发布时间】:2019-05-0515:20:14【问题描述】:我正在使用打字稿并将一个函数传递给另一个函数。如果我有一个函数被传递给打字稿中的另一个函数,... 查看详情

打字稿未定义变量基本

】打字稿未定义变量基本【英文标题】:typescriptundefinedvariablefundamental【发布时间】:2019-04-3016:40:43【问题描述】:最近从C#迁移到TypeScript。下面的代码工作正常,没有错误。但是我怀疑我还没有理解一些TS基础,因为我们只是... 查看详情

打字稿给出,“找不到模块'xmlhttprequest'的声明文件。”

】打字稿给出,“找不到模块\\\'xmlhttprequest\\\'的声明文件。”【英文标题】:Typescriptgives,"Couldnotfindadeclarationfileformodule\'xmlhttprequest\'."打字稿给出,“找不到模块\'xmlhttprequest\'的声明文件。”【发布时间】:2019-01-0706:54:2... 查看详情

在打字稿中省略不需要的同名接口方法

】在打字稿中省略不需要的同名接口方法【英文标题】:Omitunwantedinterfacemethodswithsamenamesintypescript【发布时间】:2021-10-0403:21:19【问题描述】:我有从编译器生成的typescript接口,并且有一些具有相同名称的方法(重载方法)但有... 查看详情

动态创建和分配对象属性打字稿

】动态创建和分配对象属性打字稿【英文标题】:Createandassignaobjectpropertydynamicallytypescript【发布时间】:2020-08-0416:41:06【问题描述】:我有一个这样声明的接口,exportinterfaceOurHistoryourHistory?:object;step1?:object;step2?:object;在课堂上,... 查看详情

库的打字稿声明文件找不到模块

】库的打字稿声明文件找不到模块【英文标题】:Typescriptdeclarationfileforlibrarycannotfindmodule【发布时间】:2021-09-2005:48:30【问题描述】:我正在为我正在从事的几个项目开发打字稿库。它包含一些包,每个包都有一些模块,但我遇... 查看详情

打字稿:使用类型声明强制进行空检查?

】打字稿:使用类型声明强制进行空检查?【英文标题】:Typescript:usetypedeclarationtoforceanull-check?【发布时间】:2020-12-2503:21:34【问题描述】:我知道你可以在typescript中声明typeasnullable但这并不强制用户进行空检查,例如functionmayb... 查看详情

打字稿函数类型分配问题

】打字稿函数类型分配问题【英文标题】:Typescriptfunctiontypeassignmentissue【发布时间】:2018-10-1112:49:49【问题描述】:我正在尝试在我的应用程序中使用json-rpc-ws库,但我遇到了由库定义的处理程序函数签名问题。该库在声明文件... 查看详情