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

Typescript找不到全局中声明的命名空间。d、 ts文件

景永望
2023-03-14

我已在中声明了命名空间。d、 ts应在全球范围内提供,如下所示:

/src/typings/content.d.ts

import * as something from 'something';

declare namespace Content {

...

    type Object = internal.Object;
}

我想将此命名空间用于TSX文件中的接口:

import * as React from 'react';

interface ExampleComponentProps {
    example: Content.Object;
}

export const ExampleComponent: React.FunctionComponent<ExampleComponentProps> = ({ example }) => {
    return <div>{example}</div>;
};

Types cript现在告诉我:找不到命名空间'Content'

我的tsconfig如下所示:

{
    "compilerOptions": {
        // General settings for code interpretation
        "target": "esnext",
        "module": "commonjs",
        "jsx": "react",
        "allowSyntheticDefaultImports": true,
        "experimentalDecorators": true,
        "noEmit": true,
        "noEmitOnError": true,
        "removeComments": false,
        "resolveJsonModule": true,

        "baseUrl": "./src",
        ...
    },
    "include": [
        "./src/typings/*.d.ts",
        "./src/**/*"
    ]
}

共有2个答案

宇文鸿畴
2023-03-14

这个问题的解决方法非常简单。不要在d.ts文件的顶部使用导入。

这个StackOverflow答案非常详细地介绍了如何处理这样的事情

孟晨朗
2023-03-14

签出其他问题

如果文件具有顶级导入或导出语句,则将其视为一个模块。您感兴趣的所有内容(类型、接口等)都需要显式导出。

 类似资料:
  • 我有困难建立一个有3个类的结构。我不确定包含/转发声明。 下面的代码一直在编译,直到我在inclino.h中添加名称空间和枚举。我从Inclinomeasure.h收到“Inclino尚未声明”。 倾斜度。h 倾斜度 倾角读数.h 结构正确吗?如何访问其他类中的枚举? 提前道谢。 编辑:我修复了名称空间的问题,把它放在一个新的文件,包括由3类。但我似乎误用了include/forward声明。

  • 我正在尝试运行一个独立的OSGi框架来运行其中的blueprint捆绑包,以执行驼峰路由。OSGi框架是Apache Felix,蓝图实现是Apache Aries。 以下捆绑包加载到框架的: 现在,我有一个测试包,它有一个蓝图定义,其中包含一个如下所示的camelContext: 即使加载了所有捆绑包并解决了需求,蓝图容器也会给出以下日志: 这里的重要行是:测试包找不到骆驼蓝图命名空间。但是这个

  • 如何在命名空间中转发声明类。例如,下面是一个库的头文件,用户不需要知道私有的myPtr,所以当包含在头文件下面时,不需要包含boost头文件。那么我如何向前声明boost::shared_ptr以启用用户代码编译呢? MyClass.h

  • 主要内容:IShape.ts 文件代码:,Circle.ts 文件代码:,Triangle.ts 文件代码:,TestShape.ts 文件代码:,JavaScript,嵌套命名空间,Invoice.ts 文件代码:,InvoiceTest.ts 文件代码:,JavaScript命名空间一个最明确的目的就是解决重名问题。 假设这样一种情况,当一个班上有两个名叫小明的学生时,为了明确区分它们,我们在使用名字之外,不得不使用一些额外的信息,比如他们的姓(王小明,李小明),或者他们父母的名字等等。 命

  • 命名空间同样是为了避免变量命名冲突,TypeScript 官方将命名空间视为“内部模块”,上节介绍的模块被视为“外部模块”。 如果声明相同名称的命名空间,TypeScript 编译器会将其合并为一个声明,具体的合并规则会在下节介绍。 1. 慕课解释 使用 namespace 关键字来声明命名空间。 TypeScript 的命名空间可以将代码包裹起来,只对外暴露这个命名空间对象,通过 export

  • 我在typescript中声明了一个全局变量,类似于:global。test=“something”我尝试这样做,我得到错误属性“test”在类型“Global”上不存在。