深圳seo网站优化,注册免费的网站有吗,网店美工毕业设计论文,邯郸市市长webpack已经有了vue-loader这些loader了#xff0c;为什么还需要declare module *.vue’呢#xff1f;
declare module 是为了告诉 tsc 这是一个“模块”。 如果不声明#xff0c; IDE 里因为 tsc 类型检查#xff0c; lint 会标红。 但vue-loader 是在 Webpack 构建阶段使…webpack已经有了vue-loader这些loader了为什么还需要declare module *.vue’呢
declare module 是为了告诉 tsc 这是一个“模块”。 如果不声明 IDE 里因为 tsc 类型检查 lint 会标红。 但vue-loader 是在 Webpack 构建阶段使用。IDE 做智能补全提示、还有 lint 时又不用到它vue-loader。
之所以搞这么复杂就是因为 tsc 只能识别 .js、.ts、.mjs、.json 等几种后缀的文件类型并不“认识” .vue 文件。 所以后来为了更好地支持 TypeScript 类型推断Vue3 中专门搞了一个 vue-tsc用来取代默认的 tsc就不需要你手动写一堆 declare module 了。
举例1
declare module *.vue {import { DefineComponent } from vueconst component: DefineComponent{}, {}, anyexport default component
}
举例2
// my-js-module.js
function greet(name) {return Hello, name;
}module.exports {greet,
};然后你在 TypeScript 项目中引入这个模块
// main.ts
import { greet } from my-js-module;为了让 TypeScript 编译器能正确理解 my-js-module 模块的类型信息你需要创建一个名为 my-js-module.d.ts 的类型声明文件
// my-js-module.d.ts
declare module my-js-module {export function greet(name: string): string;
}