类型声明文件如何写?

2020-04-17  本文已影响0人  sweetBoy_9126

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

d.ts生成途径

  1. 用别人的声明文件
  1. 自己写声明文件
tsc index.ts -d

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

(2). 社区:上传到DefinitelyTyped

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)
declare global {
    interface Window { 
        server: string
    }
}

window.server = 'ccc'

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

declare module 'react' {
 interface HTMLAttributes<T> extends React.DOMAttributes<T>{
   styleName?: string;
 }
 interface SVGAttributes<T> extends React.DOMAttributes<T>{
   styleName?: string;
 }
}
上一篇下一篇

猜你喜欢

热点阅读