
本文总结了TypeScript类型声明的书写,很多时候写TypeScript不是问题,写类型就特别纠结,我总结下,我在使用TypeScript中遇到的问题。如果你遇到类型声明不会写的时候,多看看lodash的声明,因为lodash对数据进行各种变形操作,所以你能遇到的,都有参考示例。
基本类型
// 变量
const num: number = 1;
const str: string = 'str';
const bool: boolean = true;
const nulls: null = null;
const undefine: undefined = undefined;
const symbols: symbol = Symbol('symbal');
const any: any = 'any types'; // typescript的any类型,相当于什么类型约束都没有
数组
// 数组: 推荐使用T[]这种写法
const nums: number[] = [1, 2, 3, 4];
// 不推荐:Array<T>泛型写法,因为在JSX中不兼容,所以为了统一都使用T[]这种类型
const strs: Array<string> = ['s', 't', 'r'];
const dates: Date[] = [new Date(), new Date()];
数组的concat方法,返回类型为never[]问题
// 数组concat方法的never问题
// 提示: Type 'string' is not assignable to type 'never'.
const arrNever: string[] = [].concat(['s']);
// 主要问题是:[]数组,ts无法根据上下文判断数组内部元素的类型
// @see https://github.com/Microsoft/TypeScript/issues/10479
const fixArrNever: string[] = ([] as string[]).concat(['s']);
接口
接口是 TypeScript 的一个核心知识,它能合并众多类型声明至一个类型声明:
而且接口可以用来声明:函数,类,对象等数据类型
interface Name {
first: string;
second: string;
}
let username: Name = {
first: 'John',
second: 'Doe'
};

本文详述了在TypeScript中书写类型声明时遇到的各种问题及解决方案,包括基本类型、数组、接口、联合类型、交叉类型、元组的使用,以及在处理第三方库、全局变量、非js资源、强制类型转换、可选属性等方面的经验分享。
最低0.47元/天 解锁文章
390

被折叠的 条评论
为什么被折叠?



