1、number类型赋值为null/undefined报错
问题:null和undefined是所有类型的子类型,但是为number赋值为null/undefined报错
解决:tsconfig.json文件中compilerOptions.strict设置为false即可
2、为什么类型断言运行时不报错
问题:类型断言是一个编译型的语言,实际运行时直接执行x.length为什么没有报错(x是数字)
理解:在执行x.length时,内部创建了对应的包装对象,在原型上查找length值,没有找到,因而结果为undefined
function getLength(x: number | string) {
// (<string>x).length在运行时结果为undefined
if ((<string>x).length) {
return (x as string).length;
} else {
return x.toString().length;
}
}
console.log(typeof getLength(1), getLength(1));
3、使用npm init vue@latest报错
解决:升级node版本(升级到18.19.0之后没有这个问题了,之前使用的版本是16.14.0)
4、关于React+ts文件引入图片报错的问题
引入logo.svg失败,在同级目录下创建一个文件logo.d.ts文件,内容如下
declare module '*.svg' {
const content: any;
export default content;
}