问题标签 [declaration-files]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
423 浏览

typescript - 从外部项目导入 .d.ts 类型

假设我有一个项目 X,其 package.json 中有以下内容:

我想将 index.d.ts 文件中的所有类型导入另一个项目。

index.d.ts 文件如下所示:

在我的另一个项目中,我尝试像这样导入这些类型:

但这似乎并不奏效。

导入这些类型的正确方法是什么?

0 投票
0 回答
32 浏览

javascript - 用于在没有 web 框架的桌面应用程序中编写脚本主机的 Typescript 定义文件

我正在尝试为用于桌面应用程序的 javascript 创建一个打字稿定义文件。我对打字稿的智能感知功能感兴趣。

运行 javascript 文件的环境位于另一个使用 windows 脚本主机的桌面应用程序中。我可以访问桌面应用程序供应商的文档(包括对象和函数及其关系),但不能访问源代码。我正在使用 Visual Studio 2017 对 javascript(Jscript) 文件进行编码。

桌面应用程序将其 API 作为类应用程序的成员公开给脚本,包括成员文档(类似于 web 浏览器,但具有不同的方法和属性)。

对象关系的示例如下:

根据开发者文档:

应用程序对象是主要对象。它的所有属性和方法都可以在脚本环境中本地访问。

脚本文件“somefile.js”的示例:

我不清楚我应该从哪里开始编写定义。我想我必须在与 javascript 文件相同的文件夹中创建一个名为“index.d.ts”的文件 - 对吧?

我可以在网上找到的所有示例都描述了在使用 NPM 或在 javascript 项目文件中使用“导入”时如何执行此操作。以上我都没有。javascript 文件只是一个没有包含的文件,桌面应用程序在其中运行一个函数。

我试图以此为起点:https ://www.typescriptlang.org/docs/handbook/declaration-files/templates/global-d-ts.html ,但似乎无法取得任何进展。

示例在某些地方使用export ,而在其他地方则使用declare,并且在不同的级别上。我似乎无法掌握其中的联系。我只是笨吗?:)

到目前为止,我在 index.d.ts 中有这个:

0 投票
1 回答
322 浏览

javascript - Typescript:是否可以从声明文件和 .js 文件生成 ts 文件?

我知道声明文件适用于库而不是项目。

但是让我们假设我有一个想要迁移到 .ts 的现有 js 项目,并且我想首先为源代码中的每个文件创建 d.ts 文件。

那样,

1- 在我的 IDE 中获得 typescript 编译器功能的好处时,我不强制我的团队使用 typescript。人们可以继续提交 .js 文件。并且在项目中使用打字稿留给开发人员。通过为每个文件创建 d.ts 文件,他们可以获得类型安全的好处。但从某种意义上说,它也阻碍了开发,当开发人员更改 js 文件时,该文件的 d.ts 文件也必须更改。因此,作为一种快捷方式,我希望能够从现有的 d.ts 和 .js 文件生成一个 .ts 文件并在那里进行开发。创建一个 d.ts 文件和 .js 文件来提交到远程源是有意义的,这样源就可以保持干净并且不习惯打字的​​人可以接近。

2- 我们是否可以使用 dts-gen 生成 d.ts 文件以抢占先机,然后手动添加剩余类型。

3-另外:与反应的兼容性。

4-并且,为不包含单个文件的项目生成 dts 文件的正确方法是什么?根据您的经验,正确的做法是什么?

那么这条管道有多大可能呢?这项工作的机会有多大,阻碍我们的障碍是什么?我能得到什么建议?

提前致谢!

0 投票
1 回答
569 浏览

typescript - 如何安装与旧版 TypeScript 兼容的 @types?

我的项目使用包@types/express@types/body-parser. 最近这些.d.ts文件被更新为使用通用默认值,但这意味着这些声明文件现在需要 TypeScript 2.3 或更高版本。

但是,我的项目仍然使用旧版本的 TypeScript - TypeScript 2.2。我如何使用 npm 确保我的项目在不升级的情况下仍然可以理解这些定义文件?

0 投票
1 回答
17 浏览

node.js - 如何使用简单的单文件项目声明模块

我正在尝试像这样导入我的库:

我收到此错误:TS7016 - 在此处输入图像描述

有问题的库在这里: https ://github.com/ORESoftware/json-stdio/blob/master/index.ts

有谁知道我如何正确创建一个模块,以便它可以使用import x = require('x')TS 语法导入?

0 投票
1 回答
97 浏览

typescript - 编写声明文件:typescript

我将如何编写声明文件

0 投票
1 回答
24 浏览

angular - 在 VisualStudio 中导航到 Angular 源代码?

在我的 Angular 应用程序源代码(使用节点构建)中,我使用了 Angular 本身的某种类型,例如:

当我现在尝试导航到HashLocationStrategyVisualStudio 中的 Angular 类型时,例如通过从上下文菜单中选择“转到定义”,我最终进入了文件node_modules/@angular/common/src/location/hash_location_strategy.d.ts. 该文件只是一个声明文件,仅包含类型签名而不包含实际实现本身。

如何导航到 的实际源代码HashLocationStrategy

0 投票
1 回答
3179 浏览

typescript - 使用本地声明文件在 TypeScript 中导入 webpack 外部包

我正在尝试在我的打字稿模块中导入一个外部模块。在 web 应用程序的环境中,已经有一个模块加载器,并且存在模块“my-lib”,它是用 JavaScript 编写的,不附带声明文件。

所以,我想要这个库,但在本地有模块声明(因为我是目前唯一在这种情况下使用 TypeScript 的人)。

我尝试使用typeRootsin设置声明文件的搜索路径tsconfig.json。这适用于/// <reference types="my-lib" />,但不适用于import "my-lib";。只有当我将@types文件夹放在node_modules文件夹中时,模块解析才会找到并导入它。

有什么方法可以设置它,这样我就不需要放在@types文件node_modules夹中了?

tsconfig.json:

@types/my-lib/index.d.ts:

src/entry.ts:

webpack.config.js:

0 投票
1 回答
8649 浏览

javascript - 本地 JS 文件的 Typescript 声明文件

在我们转换为 Typescript 的过程中,我正在尝试为我们的 Javascript 文件添加类型。但是,我无法识别声明文件。

这是我的文件结构

  • js
    • Foo.js
  • 打字
      • 索引.d.ts
  • 索引.ts
  • 包.json
  • tsconfig.json

Foo.js

索引.d.ts

索引.ts

tsconfig.json

包.json

这是重现我的问题的回购

https://github.com/erisman20/typings_help

编辑:这是我得到的错误

error TS7016: Could not find a declaration file for module './js/Foo.js'. '....../js/Foo.js' implicitly has an 'any' type.

0 投票
1 回答
1126 浏览

typescript - 模块导出对象声明

我有一个编译和公开两个 CommonJS 模块的项目;他们每个人都是一个对象。然后,我有另一个使用它们的项目。

项目结构如下:

和文件内容:

多模块包/mod1/index.js

多模块包/mod2/index.js

多模式消费者/index.ts

多模式消费者/tsconfig.json

没有noImplicitAny,这工作正常。项目编译,并按One, Two, Buckle My Shoes预期输出。但是,这些模块没有类型。我想noImplicitAny为这些模块启用并拥有正确的类型,所以我试图为每个模块编写声明文件。我已经尝试了 and 的多次迭代declare moduledeclare namespace但是在尝试使用模块时,我不断收到“...不是模块”错误。

如何为导出对象的模块编写声明文件?

更新

添加两个定义文件 -multi-mod-package/mod1/index.d.ts和- 分别multi-mod-package/mod1/index.d.ts包含内容declare module "multi-mod-package/mod1";declare module "multi-mod-package/mod1";- 消除“...不是模块”错误。但是,仍然没有正确的打字;one.count仍然作为 type 出现any

当我尝试为模块提供一个主体(即使只是一个空的)时,TypeScript 抱怨该模块没有默认导出。所以,我仍然需要一个解决方案来告诉 TypeScript 模块是一个包含该count属性的对象。