项目实战 TS

通用技巧

  1. 新手先 any 再填坑,老手先定义数据结构写逻辑

  2. 遇到新场景,没把握快速,先用 any 再填坑,填坑的过程也是 TS 技能满满提升的过程。

  3. TS 发现潜在问题

1)复杂逻辑,JS 一口气写完,调试没找到毛病,加上 TS 可以找到。

2)提测质量,提测前建议 review 一下,为避免枯燥可以完善下 TS 的使用。

  1. 提前定义好 TS,优势明显,有智能提示。

实用技巧

[1]公共数据结构,不想在每个文件中引来引去

  • 编辑 tsconfig.json 的 include 字段,引入该 ts 文件。

[2]声明语句,声明全局对象,扩展全局对象 windows 的类型,以添加一个名为 add 的方法,接受两个数字类型的参数,返回一个数字类型的结果。

优点:

  • 这种声明帮助 TS 开发中进行类型检查,确保你在调用 window.add 方法时传递正确类型的参数,并且能够正确处理返回值。

  • 开发一些需要扩展全局对象功能的情况下,特别有用,

缺点:

  • 但需要小心确保不会与现有的全局变量或方法发生冲突。

注意:

  • 不会进行类型检查,而且 TypeScript 编译器也不会对此进行警告或错误提示。

这就提现了 TS 的优势:

  • 在 TS 中使用 window.add 时,编译器会进行类型检查,确保你传递正确类型的参数,并能正确处理返回值。

  • JS 是动态类型语言,不会进行静态类型检查;因此,虽然可以在 JS 中给 window 对象添加新的属性或方法,但是编译器不会对这些扩展进行类型检查,需要自行确保。

  • 通过 TS 的类型声明,可以获得更严格的类型检查,而 JS 则更灵活但不会进行类型检查。

代码

// 利用 interface 重复声明 扩展 window,该文件需要配置到 tsconfig.json 中的 includes 字段
declare interface Window {
add(a: number, b: number): number;
} // 声明全局变量
declare const wx: any; // 全局扩展
export class Observable<T> {
// ... still no implementation ...
}
declare global {
interface Array<T> {
toObservable(): Observable<T>;
}
} // 使用
[].toObservable();

我的实践

tsconfig.json

{
"include": ["xxx1", "xxx2", "src/test.ts"],
}

src/test.ts

declare interface Window {
add(a: number, b: number): number;
}

使用:

test.vue

<template> </template>
<script>
const calculate = () => {
// 使用 inject 访问全局的 window 对象
window.add = (a, b) => a + b;
if (window) {
console.log(window.add(3, 4)); // 调用全局的 add 方法,输出: 7
}
};
</script>

参考链接

项目实战 TS的更多相关文章

  1. 【无私分享:ASP.NET CORE 项目实战(第八章)】读取配置文件(二) 读取自定义配置文件

    目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 我们在 读取配置文件(一) appsettings.json 中介绍了,如何读取appsettings.json. 但随之产生 ...

  2. 【无私分享:ASP.NET CORE 项目实战(第六章)】读取配置文件(一) appsettings.json

    目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 在我们之前的Asp.net mvc 开发中,一提到配置文件,我们不由的想到 web.config 和 app.config,在 ...

  3. SaltStack项目实战(六)

    SaltStack项目实战 系统架构图 一.初始化 1.salt环境配置,定义基础环境.生产环境(base.prod) vim /etc/salt/master 修改file_roots file_r ...

  4. 浅谈 Angular 项目实战

    为什么使用 Angular 我不是 Angular 的布道者,但如今痴迷 Angular,使用 Angular 做项目让我有一种兴奋感.目前的三大主流前端框架都研究过,博客中也有三者的相关教程,最早接 ...

  5. 机器学习_线性回归和逻辑回归_案例实战:Python实现逻辑回归与梯度下降策略_项目实战:使用逻辑回归判断信用卡欺诈检测

    线性回归: 注:为偏置项,这一项的x的值假设为[1,1,1,1,1....] 注:为使似然函数越大,则需要最小二乘法函数越小越好 线性回归中为什么选用平方和作为误差函数?假设模型结果与测量值 误差满足 ...

  6. 让你的项目使用Ts吧

    推荐在这里阅读 9012年都过半了,还不会用ts你就out了 why ? 三大框架angular2以后的版本完全是用ts开发的, vue对ts的支持也越来越好, React也有TSX组件 还在犹豫什么 ...

  7. Net core项目实战篇01---EFCore CodeFirs For Mysql 数据库初始化

    从今天开始我们用Net Core进行项目实战,采用微服务构架,因此你会看到我各模块开始都是用的web api.项目中的代码直接可以复制.费话不多说,现在就来跟我一起开始吧! 1.打开VS2017—&g ...

  8. miniFTP项目实战六

    项目简介: 在Linux环境下用C语言开发的Vsftpd的简化版本,拥有部分Vsftpd功能和相同的FTP协议,系统的主要架构采用多进程模型,每当有一个新的客户连接到达,主进程就会派生出一个ftp服务 ...

  9. Asp.Net Core 项目实战之权限管理系统(4) 依赖注入、仓储、服务的多项目分层实现

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  10. 给缺少Python项目实战经验的人

    我们在学习过程中最容易犯的一个错误就是:看的多动手的少,特别是对于一些项目的开发学习就更少了! 没有一个完整的项目开发过程,是不会对整个开发流程以及理论知识有牢固的认知的,对于怎样将所学的理论知识应用 ...

随机推荐

  1. 即时通讯技术文集(第36期):《跟着源码学IM》系列专题 [共12篇]

    为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第36 期. [-1-] 跟着源码学IM(一):手把手教你用Netty实现心跳机制.断线重连机制 ...

  2. 《深入理解Mybatis原理》MyBatis配置解析过程

    配置解析主体方法 public Configuration parse() { if (parsed) { throw new BuilderException("Each XMLConfi ...

  3. 《深入理解Mybatis原理》MyBatis的sqlSession执行流程

    sqlSessionFactory 与 SqlSession 正如其名,Sqlsession对应着一次数据库会话.由于数据库会话不是永久的,因此Sqlsession的生命周期也不应该是永久的,相反,在 ...

  4. Swagger UI、RESTful简介

    Swagger UI 简介 Swagger UI允许任何人(无论您是开发团队还是最终用户)都可以可视化API资源并与之交互,而无需任何实现逻辑.它是根据您的OpenAPI(以前称为Swagger)规范 ...

  5. Solution -「Gym 101630J」Journey from Petersburg to Moscow

    \(\mathscr{Description}\)   Link.   给定含有 \(n\) 个点 \(m\) 条边的带权无向图,一条路径的长度定义为其中前 \(k\) 大的边权和,求 \(1\) 到 ...

  6. CDS标准视图:总计应收款 I_TotalAccountsReceivables

    视图名称:总计应收款 I_TotalAccountsReceivables 视图类型:参数 视图代码: 点击查看代码 @AbapCatalog.sqlViewName: 'IFITOTALACCTRB ...

  7. canal源码分析简介-3

    5.0 store模块  2018-10-08 23:14:58  8,328 7 1 store模块简介 store模块用于binlog事件的存储 ,目前开源的版本中仅实现了Memory内存模式.官 ...

  8. w3cschool-Lua 教程

    https://www.w3cschool.cn/lua/ Lua 学习笔记之一(初阶话题) 1.八种基本类型: 如下表 基本类型 描述 备注 数值(number) 内部以double表示 字符串(s ...

  9. AVX512

    最近接触到SIMD编码,就不可避免的查到了AVX指令集,两者有什么关系呢,了解一下? 问:AVX是什么? 答:是一套指令集 下面具体看: AVX 以下内容主要转载自:AVX指令集是什么?它的应用又有哪 ...

  10. THUSC2024 & APIO2024 游记

    第二次联赛以上的比赛. Day-n lxs 突然通知:从五月七日开始要去镇海中学集训(这也意味着 THUSC-APIO 中间出去玩的时间没了 ),很神秘.这是属于高二那一届考的联考连通块,不知道为什么 ...