问题标签 [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.
typescript - 从外部项目导入 .d.ts 类型
假设我有一个项目 X,其 package.json 中有以下内容:
我想将 index.d.ts 文件中的所有类型导入另一个项目。
index.d.ts 文件如下所示:
在我的另一个项目中,我尝试像这样导入这些类型:
但这似乎并不奏效。
导入这些类型的正确方法是什么?
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 中有这个:
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 文件的正确方法是什么?根据您的经验,正确的做法是什么?
那么这条管道有多大可能呢?这项工作的机会有多大,阻碍我们的障碍是什么?我能得到什么建议?
提前致谢!
typescript - 如何安装与旧版 TypeScript 兼容的 @types?
我的项目使用包@types/express
和@types/body-parser
. 最近这些.d.ts
文件被更新为使用通用默认值,但这意味着这些声明文件现在需要 TypeScript 2.3 或更高版本。
但是,我的项目仍然使用旧版本的 TypeScript - TypeScript 2.2。我如何使用 npm 确保我的项目在不升级的情况下仍然可以理解这些定义文件?
node.js - 如何使用简单的单文件项目声明模块
我正在尝试像这样导入我的库:
有问题的库在这里: https ://github.com/ORESoftware/json-stdio/blob/master/index.ts
有谁知道我如何正确创建一个模块,以便它可以使用import x = require('x')
TS 语法导入?
typescript - 编写声明文件:typescript
我将如何编写声明文件
angular - 在 VisualStudio 中导航到 Angular 源代码?
在我的 Angular 应用程序源代码(使用节点构建)中,我使用了 Angular 本身的某种类型,例如:
当我现在尝试导航到HashLocationStrategy
VisualStudio 中的 Angular 类型时,例如通过从上下文菜单中选择“转到定义”,我最终进入了文件node_modules/@angular/common/src/location/hash_location_strategy.d.ts
. 该文件只是一个声明文件,仅包含类型签名而不包含实际实现本身。
如何导航到 的实际源代码HashLocationStrategy
?
typescript - 使用本地声明文件在 TypeScript 中导入 webpack 外部包
我正在尝试在我的打字稿模块中导入一个外部模块。在 web 应用程序的环境中,已经有一个模块加载器,并且存在模块“my-lib”,它是用 JavaScript 编写的,不附带声明文件。
所以,我想要这个库,但在本地有模块声明(因为我是目前唯一在这种情况下使用 TypeScript 的人)。
我尝试使用typeRoots
in设置声明文件的搜索路径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:
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.
typescript - 模块导出对象声明
我有一个编译和公开两个 CommonJS 模块的项目;他们每个人都是一个对象。然后,我有另一个使用它们的项目。
项目结构如下:
和文件内容:
多模块包/mod1/index.js
多模块包/mod2/index.js
多模式消费者/index.ts
多模式消费者/tsconfig.json
没有noImplicitAny
,这工作正常。项目编译,并按One, Two, Buckle My Shoes
预期输出。但是,这些模块没有类型。我想noImplicitAny
为这些模块启用并拥有正确的类型,所以我试图为每个模块编写声明文件。我已经尝试了 and 的多次迭代declare module
,declare 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
属性的对象。