【问题标题】:Extending external type declarations in Typescript在 Typescript 中扩展外部类型声明
【发布时间】:2018-05-25 10:32:45
【问题描述】:

我正在使用 Typescript 和 ant 设计库,并且我正在尝试扩展其中一个接口,只是为了添加单个属性。 我可以导入原界面(这样你就知道文件夹结构了):

import { CollapseProps } from 'antd/lib/collapse/Collapse';

我不知道如何扩展它。

我在项目根目录中创建了一个typings/antd 文件夹,将路径配置添加到tsconfig.json(和baseUrl):

"paths": {
  "antd": [
    "node_modules/antd",
    "typings/antd"
   ]
 }

我尝试了导出扩展接口的不同变体,例如:

export interface CollapsePanelProps {
  showArrow?: boolean;
}

typings/antd/index.d.ts

或者我尝试模仿antd文件夹结构,把Collapse.d.ts文件放在typings/antd/collapse里面

或尝试在我的类型文件中声明命名空间 antd 并将接口放入其中。

这些似乎都不起作用。

【问题讨论】:

    标签: typescript typescript-typings antd


    【解决方案1】:

    我的理解是声明文件仅适用于外部 Javascript 文件。

    您能否仅扩展原始界面并在代码中使用您的界面?

    import {CollapsePanelProps as OriginalCollapsePanelProps} from 'antd/Collapse';
    
    export interface CollapsePanelProps extends OriginalCollapsePanelProps {
      showArrow?: boolean;
    }
    

    【讨论】:

    • 是的,我可以这样做(事实上 - 我认为甚至不需要扩展,因为我理解合并我可以添加这个道具)但问题是我没有直接使用这个接口.我正在使用 Collapse.Panel 组件,该组件被定义为使用此接口的反应组件。只要我在上面添加showArrow,打字稿就会抱怨。所以我正在寻找一种方法来告诉 Typescript 在 ant 中使用我的扩展版本,可以这么说。
    • 我认为合并只适用于声明(d.ts 文件),不适用于这类接口
    • hmm 但是这个接口最初是在 d.ts 文件中创建的,我也想在 d.ts 文件中扩展它
    猜你喜欢
    • 2020-05-15
    • 2021-05-03
    • 2017-01-01
    • 2016-09-27
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 2016-12-23
    • 2017-02-12
    相关资源
    最近更新 更多