使用类型增强功能的方法有哪些?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。具体配置信息配置全局jsconfig.JSON我们习惯在wepback内配置相关路径别
使用类型增强功能的方法有哪些?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
我们习惯在wepback内配置相关路径别名,为了让vscode识别,我们需要做如下配置
{ "compilerOptions": { "target": "es6", "module": "commonjs", "allowSyntheticDefaultImports": true, "baseUrl": "./", "paths": { "@*", "global.d.ts"]}
安装该插件是为了解决vscode-intelligence不识别.vue文件,进而无法导航的问题
不过依然存在bug,如果import x变量名不和file-name相同,则无法识别。
终极解决方案是对 .vue文件进行js托管
export { default } from './index.vue'
vscode可以一步完美导航到具体页面
讨厌写重复代码?定义个 snippet
"export default": { "scope": "javascript,typescript", "prefix": "expd", "body": ["export {default} from './index.vue${1}';"] }, "export default as": { "scope": "javascript,typescript", "prefix": "expdas", "body": ["export {default as ${2}} from './index.vue${1}';"] },
根目录下新建global.d.ts, 并添加至jsconfig.json: include
// global.d.tsimport Vue from 'vue'type FnVoid = (...ags: any[]) => voiddeclare module '*.vue' { export default Vue}declare module 'vue/types/vue' { interface Vue { $$title: (title: string) => void $$login: FnVoid // ...... }}
vscode现今对 jsdoc语法的支持愈发完善,在代码编写代码阶段可以给我们强大的代码提示、代码补全以及代码检查
比如我们可以在注释内定义变量,针对列表返回的接口,且不需要定义 model 对象来承接数据的话,自定义变量就很有用了
甚至于还支持import语法
不过,不依附于方法之上的注释变量是不可用的
比如我新建一个文件,并写入以下注释
在代码内是无法引用的
我觉得都已经到了抽象对象多处复用的地步了,为什么不直接在model层下新建对象呢
估计vscode也是基于此考虑的
另外对象如果是通过计算得来的,vscode 代码提示功能也无法识别
如下代码是不能针对对象属性进行提示的
我们在编写代码中尽量避免这种写法
const func = () => { return ['a', 'b', 'c'].reduce((pre, cur) => { pre[cur] = 'hello ' + cur return pre }, {})}let obj = func()
如果我们想在代码中对事件定义添加提示怎么办呢?
比如我注册了一个事件
test.on('handleInputClicked', () => {})
很遗憾,目前在jsdoc上还做不到
可喜的是,在最新发布的ts4.1.beta上增加了对类型模板字符串的支持
基于此,我们甚至可以实现对 vuex 的支持
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网精选频道,感谢您对编程网的支持。
--结束END--
本文标题: 使用类型增强功能的方法有哪些
本文链接: https://www.lsjlt.com/news/249550.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-07
2024-05-07
2024-05-07
2024-05-07
2024-05-07
2024-05-07
2024-05-07
2024-05-07
2024-05-07
2024-05-07
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0