美文网首页
类型声明文件如何写?

类型声明文件如何写?

作者: sweetBoy_9126 | 来源:发表于2020-04-17 16:18 被阅读0次

问题:我们在写ts的时候会用打包工具将ts转成js,那么我们ts里声明的一些接口的类型就会丢掉,如果别人的ts引用我们的js,就会出现问题,它不知道我们的类型
解决办法:在打包的时候,同时生成一个类型声明文件***d.ts,别人的ts在使用我们的js的同时也要使用我们的d.ts就可以知道我们的类型了

d.ts生成途径

  1. 用别人的声明文件
  • 使用社区定义# DefinitelyTyped
    也就是yarn add --dev @types/react

  • 使用库自带的定义
    有些库自带声明文件,TS自己会去找

  1. 自己写声明文件
  • 如何生成*.d.ts
tsc index.ts -d

运行这个命令会同时生成.js和.d.ts两个文件

  • 如何提供给别人使用 .d.ts
    (1). 库:在package.json添加types字段,对应值为你生成的
    .d.ts

(2). 社区:上传到DefinitelyTyped

  • 给任意的js文件添加类型
    以一个简单的js代码为例
    add.js
function add(a, b) {
    return a + b
}
export default add

(1). require方式
因为我们要给它添加指定的类型,所以我们只能通过接口声明一个类型,然后通过require方法引入便于我们指定类型

interface V {
  (c: number, d: number) : number
}
const add: V = require('./add.js')

但是这样会报错

我们需要安装@types/node

yarn add @types/node

然后就可以按照我们指定的类型调用了,这时候如果我们的add里的两个参数不全都是number的就会报错

(2). import的方式
类型声明直接写在同文件名下的.d.ts里
add.d.ts

declare function a(c: number, d: number) : number;
export default a

1.ts

import add from './add.js'
add(1, 2)
  • 如何添加window全局属性
declare global {
    interface Window { 
        server: string
    }
}

window.server = 'ccc'

注意:global属性必须在有export或import的文件里使用,否则会报错

  • 如何修改React组件属性
    给react的属性添加新的取值
declare module 'react' {
 interface HTMLAttributes<T> extends React.DOMAttributes<T>{
   styleName?: string;
 }
 interface SVGAttributes<T> extends React.DOMAttributes<T>{
   styleName?: string;
 }
}

相关文章

  • 类型声明文件如何写?

    问题:我们在写ts的时候会用打包工具将ts转成js,那么我们ts里声明的一些接口的类型就会丢掉,如果别人的ts引用...

  • autojs声明文件

    声明文件是什么 声明文件是typescript中的概念, 主要用来描述变量类型, 声明文件不包含实现,它只是类型声...

  • TypeScript的类型声明文件

    一开始使用TS时,我总担心,如果用的第三方js库不是TypeScript写的,那么 IDE 一定会疯狂报错,开发体...

  • Typescript 声明文件d.ts declare

    声明文件中,declare 表示声明的意思js原有类型必须加declare,js不存在的类型不用加,如:inter...

  • TS中给图片声明类型

    来看看ts中如何给图片等文件声明类型 用declare关键字来声明类型用module来告诉TS声明的是一个模块用*...

  • go语言与C++细节上的一些差异

    类型声明和类型别名的区别 C++: C++中声明新类型,只能使用 类 或 结构体 的形式。例如在源文件a.cpp中...

  • php版本特性学习

    5.6->7.0变更新特性 强制标量声明:文件顶部添加(declare(ticks=1);),变量添加类型声明 返...

  • JS作用域

    JS模块化 JS中变量声明问题 JS为弱类型,编译型语言声明提前在JS中,声明语句会被提前到文件首 静态类型为强类...

  • TypeScript中的类型别名和枚举(3)

    一、TypeScript中的声明文件 当使用第三方库时,我们需要引用它的声明文件 通常我们会把类型声明放到一个单独...

  • H5常用知识点

    1. 常用标签 Header 标签 文档类型声明 声明当前文件是一个HTML5...

网友评论

      本文标题:类型声明文件如何写?

      本文链接:https://www.haomeiwen.com/subject/llmxuctx.html