TypeScript、Vue3、Vite一些小问题的处理

238 阅读1分钟

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)

image.png

4、关于React+ts文件引入图片报错的问题

引入logo.svg失败,在同级目录下创建一个文件logo.d.ts文件,内容如下

declare module '*.svg' {
  const content: any;
  export default content;
}

5、“React”指 UMD 全局,但当前文件是模块。请考虑改为添加导入

www.cnblogs.com/tigerK/p/14…