根据this篇文章,typescript 2.0的打字系统已经改变,因此现在不清楚如何附加自定义打字.我应该一直为此创建NPM包吗?

提前谢谢!

推荐答案

您可以仅为您的项目创建本地自定义类型,在这里可以为JS库声明类型.为此,您需要:

  1. 创建目录 struct 以保留类型声明文件,使目录 struct 类似于以下内容:

     .
     ├── custom_typings
     │   └── some-js-lib
     │       └── index.d.ts
     └── tsconfig.json
    
  2. index.d.ts文件中,为JS库添加声明:

     declare module 'some-js-lib' {
       export function hello(world: string): void
     }
    
  3. (Optional: skip if you have TypeScript >= 4.x)tsconfig.jsoncompilerOptions部分添加对该类型声明的引用:

     {
       "compilerOptions": {
         ...
         "typeRoots": ["./node_modules/@types", "./custom_typings"]
       },
       ...
     }
    
  4. 在代码中使用声明的模块:

     import { hello } from 'some-js-lib'
    
     hello('world!')
    

Typescript相关问答推荐

实现忽略了JSSOM中的doctor.body.innerHTML集

如何使用TypScript和react-hook-form在Next.js 14中创建通用表单组件?

如何将http上下文附加到angular中翻译模块发送的请求

如何在TypeScript对象迭代中根据键推断值类型?

无法将select选项的值设置为ngFor循环中的第一个元素

在键和值为ARGS的泛型函数中未正确推断类型

Next.js错误:不变:页面未生成

使用axios在ngOnInit中初始化列表

类型,其中一条记录为字符串,其他记录为指定的

TypeScrip 5.3和5.4-对`Readonly<;[...number[],字符串]>;`的测试版处理:有什么变化?

通过按键数组拾取对象的关键点

从子类集合实例化类,同时保持对Typescript中静态成员的访问

下载量怎么会超过下载量?

转换器不需要的类型交集

确保对象列表在编译时在类型脚本中具有唯一键

打字脚本中的模块化或命名空间

对于VUE3,错误XX不存在于从不存在的类型上意味着什么?

有没有一种更好的方法来存储内存中的数据,而不是在类型脚本中使用数组和基于索引的函数?

如何从联合类型推断函数参数?

Next 13 + React 18 createContext 类型的构建问题