typescript 声明文件 继承扩展其他模块,扩展String等原生对象,函数不确定参数个数,json不确定属性

typescript声明文件 可以用于js库兼容ts引入、定义类型使编辑器提示更友好。

本文用于记录ts声明文件中一些技巧,不介绍声明文件的基本用法,基本用法可以参考ts官网。

1. 继承扩展其他模块

比如你的一个模块扩展了 vue,在vue对象上新增了一个方法,那么在你的声明文件中这样定义可以获得编辑器智能提示:

declare module "vue/types/vue" {
  interface Vue {
    fn():void;
  }
}

找到你希望扩展的对象所在的声明文件,然后在对象上加上你的方法或者属性就行,不会覆盖原有的属性。
在这里插入图片描述

2. 扩展String等原生对象

如果你希望扩展String,Array等原生对象呢?你需要先新建一个文件,比如叫 extend.d.ts,写入下内容

interface String {
    testFn():void;
}

然后在你的声明文件中引入这个文件就可以啦:

import './extend';

在这里插入图片描述

这里只演示了String,其他原始对象的扩展也是同理

3. 函数不确定参数个数

当你的一个函数有不缺定个参数的时候,类似于数组的push方法,解决方法就是使用 扩展运算符

declare function fn(...items: Array<string>): string;

上面定义的函数fn支持任意个数的字符串参数

4. json对象不确定属性

当你要声明一个json对象,但是不缺定属性时可以这么写

declare interface json { [key: string]: any }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值