首页 > 其他分享 >typescirpt 的一些问答

typescirpt 的一些问答

时间:2023-11-24 22:33:58浏览次数:31  
标签:node 文件 typescirpt modules ts 文件夹 一些 问答 types

如何看待d.ts

  • 这个是typescript的类型文件,tsc 编译器会产生这个文件,我们也可以手动的编写这个文件,这样可以在不重新编写js的前提下,还能享受到ts带来的好处
  • vscode 编译器的智能提示也是依靠这个文件

vscode 的只能提示是如何找到类型信息的

  • 首先ts工程下的所有d.ts都自动被检测到,并加载到智能提示的范围。ts工程指的是tsconfig中的include, files所指定的。如果不指定那默认就是./src/xxx
  • 第三方包的类型信息来自于哪里
    • 包本身自带的。可以参考包本身的package.json中的types配置段。一般情况下d.ts文件跟对应的x.js在同一目录,并且同名。这个好处是得益于,ts的import xx from 'package',这个package是不带后缀的。
    • 如果第三方的包并没有提供类型文件怎么办。安装约定,我们可以在node_modules/@types/xxx,在这个目录下面放置包的类型文件。注意,这个目录下面,类型文件必须以包的名称作为文件夹来组织。同时得有index.d.ts,这个是入口文件
    • 第三方包的类型文件还可以放到哪里,如何让vscode 找到。我们可以通过tsconfig中的typeRoots这个配置项来配置。它的默认值就是node_modules/@types.同样,所有第三方包的文件都必须采用包名为文件夹来存放。
  • 我们注意到,vscode 中有很多类型是全局的,也就是不需要采用import, 就自然有智能提示。这个是如何做到的。
    • tsconfig中有个types的配置项,这个里面是包的名称,它其实指向的是node_modules/下面的文件夹。这些指定的文件夹会默认加到全局的类型中。默认是找文件夹下面的index.d.ts

如何看到///<reference path=""/>,///<reference type=""/>

  • 为什么需要它?
    这个是用来告诉编译器,在编译当前文件时,先引入这些申明的文件。有人说这个跟c 语言中的头文件类似。
  • 哪里可以使用这些文件
    d.ts, ts 文件中都可以使用
  • path vs type
    path 则是标记引用的文件名称
    type 则是标记引用的类型名称,这个类型名称,指的是包的名称,与import 同样的解析规则。除此之外,它还会去解析node_modules/@types/下面的文件夹。注意,这里的包名,其实就是文件夹的名称。

typescript 是如何依据类型去寻找js 文件呢。

  • 首先ts 假设,d.ts 文件跟js 文件同名且在同一目录。而且ts 中的import,并没有指定后缀名
  • 其次,node_modules/@types/下面的同名文件夹跟node_modules下面的同名文件夹也是关联信息。

标签:node,文件,typescirpt,modules,ts,文件夹,一些,问答,types
From: https://www.cnblogs.com/kongshu-612/p/17854933.html

相关文章

  • 一些方便的webassembly 工具
    WebAssembly团队提供了一些方便的webassembly工具集包含的工具集wat2wasm 将WebAssembly文本格式(.wat)转换为WebAssembly二进制格式(.wasm)wasm2wat 是wat2wasm的反向工具,将二进制格式转换回文本格式(.wat)wasm-objdump 类似于传统的objdump工具,它打印有关WebAssembly二进制......
  • 值得收藏的一些HTML、JavaScript、ASP代码
    1.CDONTS.NewMail组件使用说明 SetMailObject=Server.CreateObject("CDONTS.NewMail") MailObject.From="发信邮箱" MailObject.To="收信邮箱" MailObject.Cc="抄送邮箱" MailObject.Bcc="密送邮箱" MailObject.Subject=&qu......
  • mysql 一些优化参数
     大批量数据加载优化load数据加载格式:loaddatalocalinfile'文件路径'intotable表名fieldsterminatedby'[分隔符]'lineterminatedby'[换行符]'11、首先,检测全局变量‘local_infile’的状态,如果是off状态则是不可用showglobalvariableslike'local_infile';......
  • 存储云服务中OBS(对象存储服务)的一些归纳总结
    一、概念一个基于对象的海量存储服务,桶(类似于文件夹)里面装着对象(文件)。桶是OBS中存储对象的容器,对象是OBS中数据存储的基本单位一个对象实际上是文件数据与其相关属性信息的集合体(不只是一个data),可以类似于Java中的类。OBS用户可以上传下载OBS系统里的任意资源我自己画的一......
  • 对八数码的一些解释
    先简要解释一下从任何一个状态到目标状态的移动步数不可能小于所有数字当前位置与目标位置的曼哈顿距离之和考虑一次移动,只能让一个数字的曼哈顿距离加一或者减一,而目标状态所有数字的曼哈顿距离都是0,所以得证我们可以用普通的BFS做这道题目,由于边权是1,所以第一次搜索到的时候一......
  • 对第K短路一题的一些解释
    首先证明那个比较显然的推论我们先证明一下一个小引理:这个BFS先出队的点一定比后出队的点的代价小或等于用数学归纳法,假设前面已经出队的点满足以上性质,之前最后一个出队的点为\(x\),现在队列里面的队首是\(y\),那我们就是要证明\(y\)的代价比\(x\)小或等于我们考虑一下\(y\)是怎......
  • 关于A*的一些理解
    A*算法,本质是对BFS的一种优化,无论这个BFS是普通的BFS(搜索树上边权为1)还是优先队列BFS(搜索树上的边权可能大于1)蓝书上论证正确性那一段说的\(s\)指的是目标状态的某一状态(即\(s\)已经到达了目标状态但不一定最优)然后再去理解那一段话但是,我想说的是,中间的点第一次被取出的时候不......
  • obproxy 源码编译以及一些问题整理-暂未编译成功
    尝试自己编译下oceanbase的obproxy并记录下一些问题,目前是暂未编译成功,因为是openssl版本包的问题环境说明基于了RockyLinuxrelease8.8,同时obproxy使用了4.2.1版本的构建参考命令这个官方已经提供了,主要就是initdebug,makeshbuild.shinitshbuild.sh......
  • Zabbix“专家坐诊”第212期问答汇总
    问题一Q:Zabbix 5.0.35 centos7,目前监控的交换机端口流量,怎么做能把几个端口汇聚累加到一个图上,2个1G的流量图变成有一个2G的图形,类似cacti的汇聚图形,即这样的2张图汇聚起来。A1:参考:Zabbix聚合图形配置指引,https://forum.lwops.cn/article/485A2:可以针对该主机,在主机层面建个新的......
  • 之后的一些计划
    数据结构待写vectorhash平衡树(splay,treap,AVL树)Link-Cut-Tree树套树不想写heap红黑树舞蹈链DLX主席树已写kdtree算法待写拓扑排序KMPmanacher树上启发式合并cdq分治不想写莫队已写逆元......