背景 业务代码中, 会涉及到大量从window读取自定义属性, 如何声明 window 很重要 解决方案 1) 重新声明 window 类型 window 本质上是 Window 类型, 那么直接可以通过全局声明重写 global 是 ts中关键词,所有在 global 闭包中的会自动提升至全局。 此处必须用 interface 因为 interface 有自动合并的能力 2) 局部as 适用于临时解决 3) xx.d.ts 重写 所有 d.ts…
背景 ts 中关键词和特殊, 最近深入了解了下, 下面作为笔记 is 作用 关键词用于类型推断, 和类似, 区别是可以在函数里面使用, 用于函数的返回定义, 改变的是整个上下文 is 的使用 典型的判定类型方案, 若期望使用更精准的类型, 不要简单在函数做出 boolean 类型, 而是设置入参为 期望的类型, 那么后续闭包中该对象会自动解析成 的类型 Reference using-type-predicates
背景 ts 中和都是常用类型, 在实际开发中经常混用,顺着双休总结下 2 者的区别 interface 只能描述 object 基础数据类型, 只能用 type 声明, 比如 , , interface 可以重名, type 不可以 实际运行时,重名的 interface 会自动合并, interface 不像 type 可以使用 & 合并功能 interface 可以继承, type 不行 type…
背景 typescript 配置项很多,不像 js 有固定语法,实现一种功能根据配置有多种写法,配置不同会出现不同的 语法错误。本文主要分析主要的参数,提高自我对 ts 的理解能力 更准确的强烈推荐使用官方文档, 本文只是阐述个人的理解 compileOptions target 编译结果版本,ts 本身可以直接替换 babel 编译代码,个人更喜欢使用 babel, 故 ts 的作用仅仅用于 typings。target 作用不大, 用 es…
背景 我最终打算将我的项目慢慢向 typescript 迁移了,不是因为原生 javascript 不好,而是遇到了其无法解决的问题。如下是我总结的原因 手写文档太痛苦 我当前使用手动写文件来实现客户端代码的自动补全和提示, 这种方式不论在 webstorm, 还是 vscode,效果相当不错。起初,这没有什么问题。但是随着版本的迭代, 我发现如若修改一点点的内容,我必须手动 去修改相关文档。而这原因导致我多次重新发布版本。故我希望将文档和代码合并, typescript…