这是第六届青训营的第三篇实践笔记
在写大项目的时候使用了ts,遇到了许多因为设置了ts.config导致报红的问题。 以本次大项目使用的为例,来介绍ts泛型以及设置等问题。
tsconfig.json
本次项目所使用的配置
/* Linting */
/* 严格检查选项 */
"strict": true, // 开启所有严格的类型检查
"alwaysStrict": true, // 在代码中注入'use strict'
"noImplicitAny": false, // 不允许隐式的any类型
"noImplicitThis": true, // 不允许this有隐式的any类型
"strictNullChecks": true, // 不允许把null、undefined赋值给其他类型的变量
"strictBindCallApply": true, // 严格的bind/call/apply检查
"strictFunctionTypes": true, // 不允许函数参数双向协变
"strictPropertyInitialization": true, // 类的实例属性必须初始化
为什么要使用tsconfig.json
通常我们可以使用 tsc 命令来编译少量 TypeScript 文件.
但如果实际开发的项目,很少是只有单个文件,当我们需要编译整个项目时,就可以使用 tsconfig.json 文件,将需要使用到的配置都写进 tsconfig.json 文件,这样就不用每次编译都手动输入配置,另外也方便团队协作开发。
TS泛型
在不定义类型时类型不明确,用target指代
function getRepeatArr(target){
return new Array(100).fill(target)}
type IGetRepeatArr = (target:any) => any[]
type IGetRepeatArrR = <T>(target: T) => T[]
泛型不止应用在函数中
泛型约束:使用extends
type IGetRepeatStringArr = <T extends string> 限制泛型必须符合字符串
泛型参数默认类型
type IGetRepeatArr<T = number> =(target:T)
默认了数据类型为number类型
这两者是有区别的。