-
2021-01-20 11:01:00
描述
- 在使用ts的时候,最大的一个好处就是可以给js各种类型约束,使得js能够完成静态代码分析,推断代码中存在的类型错误或者进行类型提示
- ts完成类型推断,需要事先知道变量的类型,如果我们都是用ts书写代码,并且给变量都指定了明确的类型,这时ts可以很好的完成类型推断工作
- 但是有时,我们不免会引入外部的 js 库,这时ts就对引入的js文件里变量的具体类型不明确了,为了告诉ts变量的类型,因此就有了.d.ts (d即declare),ts的声明文件。
举例
-
比如我们在项目中使用了jQuery,那么对ts来说,它并不清楚jQuery或者$是什么类型,因此需要我们对它进行声明,例如:
declare var jQuery: (selector: string) => any;
-
而这些声明我们常常放在.d.ts文件中,同时注意,声明文件只包含类型声明,并不包括具体的实现
-
并且,很多常用库(比如jQuery)的声明文件已经由其他人写好了,因此我们通过工具安装使用某个库时,并不需要自己来写声明文件
-
declare 定义的类型只会用于编译时的检查,编译结果中会被删除。
更多相关内容 -
如何编写一个d.ts文件的步骤详解
2020-11-28 09:23:10前言 本文主要讲怎么写一个typescript的描述文件(以d.ts结尾的文件名,比如xxx.d.ts)。 最近开始从js转ts了。...如果你只写js,d.ts对你来说也是有用的,大部分编辑器能识别d.ts文件,当你写js代码的时候给你智 -
rollup-plugin-dts-bundle:用于捆绑d.ts文件的汇总插件
2021-04-01 15:35:12用于捆绑d.ts文件的汇总插件 关于 当您要将所有.d.ts文件捆绑到一个捆绑包中时,此插件很有用。 引擎盖下的插件使用进行捆绑,请检查它的选项说明和示例。 安装 # yarn yarn add rollup-plugin-dts-bundle -D # npm ... -
从`.vue`文件生成`d.ts`。-JavaScript开发
2021-05-26 03:41:55从`.vue`文件生成`d.ts`。 :yellow_heart:通过在GitHub上赞助他,可以帮助他成为一名全职开源维护者。 vue-dts-gen从.vue文件生成d.ts。 全局安装:npm i -g vue-dts-gen或本地安装...d.ts仅发射d.ts文件。 输入示例: -
如何获取TypeScript的声明文件.d.ts
2020-12-09 16:02:05二、使用npm指令来获取.d.ts文件 install -save @types/jquery -g 运行后在type/jquery目录下生成4个文件:index.d.ts,lincense,package.json,readme.md,其中的index.d.ts即为jquery的声明文件。 三、npm需要Nodejs... -
0.ts、1.ts、2.ts等类型视频合并工具
2022-04-29 10:33:591、使用电脑浏览器打开视频合并工具.html,输入最后一个数字,如视频文件中最后一个文件是88.ts,就在输入框中输入88。 2、点击“生成”按钮。 3、将生成的文件复制到视频文件夹中,然后鼠标双击即可。 5、合并后的... -
crypto-js.zip,AES加密解密egret库有.d.ts文件
2020-06-04 17:49:49AES加密解密egret库有.d.ts文件,可以直接放入egret中使用,AES加密解密egret库有.d.ts文件,可以直接放入egret中使用 -
css-modules-ts-loader:`css-modules-ts-loader`是一个webpack插件,可以创建一个.d.ts文件,其中包含要...
2021-04-30 00:14:10css-modules-ts-loader创建一个.d.ts文件,其中包含要通过打字稿导入CSS类和ID。 入门 首先,您需要安装css-modules-ts-loader : npm install --save-dev @greyskullrocks/css-modules-ts-loader 然后配置您的... -
什么是d.ts文件,它是不是typescript文件?
2021-06-02 21:14:50TypeScript是JavaScript...TypeScript可以将大量变量的类型声明统一提取到单独的文件,此类文件被称为`声明文件`,它的文件扩展名是`.d.ts`,它可以被TypeScript解释器读取,并且能直观地表示出各种变量的使用方式。定义
TypeScript是JavaScript类型的超集,它的扩展名是
.ts
。- TypeScript是一门强类型语言,它的变量在使用前,都必须声明类型。
- TypeScript可以将大量变量的类型声明统一提取到单独的文件,此类文件被称为
声明文件
,它的文件扩展名是.d.ts
,它可以被TypeScript解释器读取,并且能直观地表示出各种变量的使用方式。 - 由于TypeScript是JavaScript的超集,所以
声明文件也能用来表示JavaScript脚本的使用方式
。 - 一般来讲,组织声明文件的方式取决于库是如何被使用的。
传送门:https://www.tslang.cn/docs/handbook/declaration-files/introduction.html
如何引用
- 在你需要声明的
.js
或.ts
文件的同一位置,插入你的同名.d.ts
文件。|-- src |-- index.js |-- index.d.ts |-- app.ts |-- app.d.ts
package.json
文件有一个types
(或typings
)属性专门用来定义main
入口文件的声明文件路径。- npm仓库里有一个
@types
组织,专门用来存放库的声明文件,引用时只需要安装npm install --save-dev @types/库名
即可。- 所有人都可以申请将自己的所有声明文件按规范提交到
@types
中去。 - 例如:
jest
测试库的声明文件就储存在@types/jest
中。 @types
下面还有很多底层类的声明文件,比如Number
、String
等在@types/code-js
里都有声明。- 传送门:https://github.com/DefinitelyTyped/DefinitelyTyped
- 所有人都可以申请将自己的所有声明文件按规范提交到
- 在声明文件中使用
/// <reference types="..." />
头,来引入依赖的其它声明。types
指某个其它声明的库,而不是声明文件的路径。
问题
问:为什么我在编辑器中选择
Promise类
进行溯源,会给我打开了一个lib.es2015.promise.d.ts
文件?其中有对Promise的声明。而我的项目中明明没有这个文件。
答:因为你的项目或者编辑器,通过某种引用方式(上面的3或4方式),引用了这个声明文件。总结
多看看官方文档,写代码总是很简单。
-
gulp TypeScript项目js库,生成.d.ts文件
2022-04-13 17:20:40.js, .min.js, .d.ts 输出目录 创建src文件夹 ts项目源码目录 在项目目录下创建 package.json 文件 npm init 配置发布者的信息 和 包声明 npm安装gulp npm install --global gulp-cli 创建gulpfile.js脚本文件 '...检测node环境
node --version npm --version npx --version
创建bin文件夹
.js, .min.js, .d.ts 输出目录
创建src文件夹
ts项目源码目录
在项目目录下创建 package.json 文件
npm init
配置发布者的信息 和 包声明
npm安装gulp
npm install --global gulp-cli
创建gulpfile.js脚本文件
'use strict'; const gulp = require("gulp"); const minify = require('gulp-minify'); const inject = require("gulp-inject-string"); const ts = require('gulp-typescript'); const merge = require('merge2'); const tsProject = ts.createProject('tsconfig.json'); gulp.task('buildJs', () => { return tsProject.src() .pipe(tsProject()) .js.pipe(inject.replace('var es;', '')) .pipe(inject.prepend('window.es = {};\n')) .pipe(inject.replace('var __extends =', 'window.__extends =')) .pipe(minify({ ext: { min: ".min.js" } })) .pipe(gulp.dest('./bin')); }); gulp.task("buildDts", ["buildJs"], () => { return tsProject.src() .pipe(tsProject()) // .dts.pipe(inject.append('import e = framework;')) .pipe(gulp.dest('./bin')); }); gulp.task("copy", ["buildDts"], () => { return gulp.src('bin/**/*') .pipe(gulp.dest('../demo/egret_demo/libs/framework/')) .pipe(gulp.dest('../extensions/behaviourTree-ai/egret-demo/libs/framework/')) }); gulp.task('build', ['copy'], () => { return merge([ gulp.src('bin/*.js') .pipe(gulp.dest('../demo/laya_demo/bin/libs/')), gulp.src('bin/*.ts') .pipe(gulp.dest('../demo/laya_demo/libs/')), gulp.src('bin/framework.d.ts') .pipe(gulp.dest('../extensions/behaviourTree-ai/source/lib/')) .pipe(gulp.dest('../extensions/ecs-star/lib/')) .pipe(gulp.dest('../extensions/ecs-tween/lib/')) ]) });
build
gulp build
Description
gulp官网 -
解决.d.ts文件无法被找到的问题
2021-06-30 11:09:17参考 如何修改 node_modules 里的文件(同事看了直呼内行) 问题 在使用dumi开发开源框架的时候遇到无法找到模块 xxx 的声明文件, ...最后没办法了,直接去node_modules里面源文件添加一个.d.ts文件,这时.问题
在使用dumi开发开源框架的时候遇到无法找到模块 xxx 的声明文件,
一直以来都是使用@types/xxx跟创建一个.d.ts来解决的但这次加了不生效,仍然还是无法找到模块 xxx 的声明文件,然后我就在src目录下创建一个types.d.ts,之后编译器不再报错了,我以为就这样解决了,但是在打包的时候。
他又报错了,打包不了。解决
最后没办法了,直接去node_modules里面源文件添加一个.d.ts文件,这时打包跟编译器报错都解决了,但是防止下一位同事打包能正常打包,就去找了一下保存node_modules的解决方案。
具体是通过patch-package
这个npm包来实现的。使用patch-package实现
1、先安装
patch-package
:npm i patch-package --save-dev
出问题了,换
yarn add patch-package --save-dev
2、修改
package.json
,新增命令postinstall
:“scripts”: {
“postinstall”: “patch-package”
}3、修改node_modules对应代码。
4、执行命令:
npx patch-package 你对应的包名
比如我的npx patch-package rc-util
。
又出问题了,去找一下GitHub,yarn - TypeError: Cannot read property ‘dependencies’ of undefined 有点相似,最后使用yarn patch-package rc-util --use-yarn
终于成功了,目录下也成功出现了这个文件。
最后去试了一下删除node_modules,重新安装一下
新增的.d.ts文件回来了。具体用法查看patch-package。 -
ts-barrelr::oil_drum:一个VS Code插件,可自动为Typescript或tsx项目生成index.ts文件
2021-05-02 09:40:34ts-barrelr 特征 ts-barrelr使index.ts桶文件的生成自动化。 ts-barrelr将产生一个index.ts,其中包含在编辑器窗口中打开的包含当前文件的... 默认情况下,ts-barrelr将使用单引号作为index.ts文件中导入的默认引号 -
npm发布包缺少.d.ts文件,VSCode找不到模块声明文件
2022-04-05 16:29:35npm发布包缺少.d.ts文件,VSCode找不到模块声明文件 -
如何编写一个d.ts文件
2019-08-08 09:54:46如何编写一个d.ts文件 .d.ts文件是ts模块,变量一系列的申明文件。比如要使用react,就需要安装"@types/react",之后还会有提示。自定义全局声明文件,往往在根目录新建一个typings.d.ts文件 全局类型 变量 ... -
typescript中.d.ts文件以及模块注意点
2021-01-21 11:21:02菜鸟教程:.d.ts文件是什么? stackoverflow: .d.ts文件是什么?它是怎么和js文件映射的? 知乎:node包的.d.ts映射——@types: 本篇主要记录.d.ts文件的作用还有它是怎么与js文件映射的。 .d.ts文件该怎么写,这个... -
vite.config.ts文件的配置
2021-03-16 13:39:25import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import path from 'path' // ...export default defineConfig({ ... server: { open: true }, resolve: { ... // 如果 -
TypeScript 里 .d.ts 文件的用处
2021-07-01 22:29:27“d.ts”文件用于为 TypeScript 提供有关用 JavaScript 编写的 API 的类型信息。这个想法是你正在使用像jQuery 或 underscore 这样现有的 javascript 库。 您想使用 TypeScript 来消费 这些 jQuery 库实现的 API。 ... -
《TypeScript》入门与精通-.d.ts描述文件的使用和详解
2021-12-15 10:37:07什么是描述文件?在回答这个问题之前,我们先思考这样一个问题,typescript和javascript原则上并不相通,那么在typescript出来之前所有的javascript是不是都不能使用了,比如jQuery,如果不能用,那是否是在可惜... -
typescript:d.ts文件作用、ts和js风格的外部模块导入、运行ts工程
2019-11-24 00:36:03文章目录1背景2 从零开始示范读取本地excel文件 1背景 想给妹子写一个导入的导入excel中的内容并自动填充到网页中的脚本,脚本通过油猴实现的运行,所以,第一步就是在现在本地实现excel内容的解析。因此,在本地... -
众多的.ts文件、.key文件、.m3u8文件,合并成一个完整的mp4格式的视频
2020-04-15 18:22:31小编最开始拿到N多个带编号的ts文件,然后又配带了.key文件和.m3u8文件,一脸懵逼.... 电脑里某盘里多了这么多ts,却无法下手。 然后就是老方法,问度娘: 一.CMD生成MP4 1、首先将要合成的ts文件放在同一个... -
.d.ts文件引用报错
2019-04-16 16:01:49Try `npm install @types/open-graph-scraper` if it exists or add a new declaration (.d.ts) file containing `declare module 'open-graph-scraper';` /// <reference path="../types/open-graph-scraper.... -
python 爬取页面内的.ts文件并合并保存
2021-06-29 18:24:15首页打开待爬取的页面获取ts文件列表,按F12查看页面内容,ctlr+F 搜索 m3u8,找到这个地址。 然后我们拿到这个地址,去读取里面内容。 import requests url=... -
VSCode中如何利用d.ts文件进行js智能提示
2019-11-30 13:15:39这篇文章主要给大家介绍了关于VSCode中如何利用d.ts文件进行js智能提示的相关资料,文中通过图文以及示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。... -
typescript中d.ts文件使用外部定义的typescript类型
2021-07-01 15:23:19在写ts的时候遇到这样的一个情况:我需要将mongodb链接的实例对象挂载到node全局上,这个时候如果直接将...// 会导致types.d.ts文件失效 // import GriFiled from 'gridfs-stream' declare interface nameType { na -
vite+ts引入 .vue或 .ts文件时提示找不到模块
2022-03-31 16:26:30方式二:其实和方式一的方法类似,就是在src下创建一个创建一个文件夹,名字自定义,然后创建一个 .d.ts文件,内容和方式一 一样。注:需要注意的是,如果创建文件夹,需要在你的tsconfig.json文件中声明一下,结构... -
TypeScript 中的 d.ts 文件有什么作用,这种文件的内如如何编写
2018-06-25 22:34:47TypeScript 相比 JavaScript 增加了类型声明。这些类型声明帮助编译器识别类型,从而防止开发者“搬起石头砸自己的脚”。原则上,TypeScript 需要开发者做到先...用 ts 写的模块在发布的时候仍然是用 js 发布,...