首页 > 其他分享 >项目实战 TS

项目实战 TS

时间:2024-05-09 13:11:36浏览次数:11  
标签:实战 number 项目 add TS window 类型 全局

项目实战 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>

参考链接

标签:实战,number,项目,add,TS,window,类型,全局
From: https://www.cnblogs.com/djsz3y/p/18181916

相关文章

  • Nginx负载均衡、动静分离Tomcat案例实战
    一、前言1)Tomcat是一款开源的、免费的WEB软件服务器,是隶属于Apache基金会旗下的,主要是用于去发布网站代码、提供网页信息服务的。用户通过浏览器可以实现网站页面的访问。2)TomcatWEB软件默认可以处理静态网页(Apache、Nginx),同时也可以处理动态网页,主要是处理JSP动态网页,JSP(Java......
  • LLM 大模型学习必知必会系列(二):提示词工程-Prompt Engineering 以及实战闯关
    LLM大模型学习必知必会系列(二):提示词工程-PromptEngineering以及实战闯关prompt(提示词)是我们和LLM互动最常用的方式,我们提供给LLM的Prompt作为模型的输入,并希望LLM反馈我们期待的结果。虽然LLM的功能非常强大,但LLM对提示词(prompt)也非常敏感。这使得提示词工程成......
  • SHELL编程开发Nginx一键部署实战脚本
    一、基于SHELL编程开发Nginx一键部署脚本(Make源码方式),编程思路如下从Nginx官网下载软件包nginx-1.24.0.tar.gz;通过Tar工具对其解压,tar-xzvfnginx-1.24.0.tar.gz;cd切换至nginx-1.24.0/源代码目录;预编译,./configure;编译,make;安装,makeinstall;启动Nginx服务,/usr/local/nginx......
  • [转]Cocos2dlua手游 Lua解密与资源解密实战
    来自看雪:Cocos2dlua手游Lua解密与资源解密实战https://mp.weixin.qq.com/s/WeYxlXZvCPv_3nGgeKdunw Cocos2dlua逆向相关学习,略有删减,直接进入正文APK大致如下:.├──assets│├──res││├──ani│││└──logo│││└─......
  • windows下源码编译CMake项目
    Cmake项目1、安装路径和源码安装包下载地址:https://cmake.org/download/源码地址https://github.com/Kitware/CMake2、编译源码下载后会有一个CMake-master的文件夹在里面新建一个build目录打开cmake-gui可执行文件出现cmake的界面,设置source路径为刚刚的CMake-......
  • TSINGSEE青犀视频边缘计算AI智能分析网关V4告警消息语音推送的配置流程
    TSINGSEE青犀视频边缘计算硬件智能分析网关V4内置了近40种AI算法模型,支持对接入的视频图像进行人、车、物、行为等实时检测分析,上报识别结果,并能进行语音告警播放。今天我们来分享一下如何配置和使用AI智能分析网关V4的语音推送。提前准备:以企业认证在腾讯云注册一个账号腾讯云......
  • OS + hongmeng / harmony os / ArkTS
    s 序号项目技术栈1技术栈2备注1AI大模型盘古GPT/LLaMA 2AI框架MindsporeTensorFlow 3设计工具HarmonyOSDesignMaterialDesign 4编程框架ArkUIJetpackCompose 5编译器运行时Arkcompiler/RuntimeART 6编程语言ArkTSJava......
  • 关于vue3中使用echarts设置tooltip的type为axis不显示的问题
    因为vue3中的数据对象是用的proxy监听的,要取值需要用value等方法取出来,解决方法:使用markRaw让echarts从监听对象变成普通对象!在Vue3中,markRaw是一个用于告诉Vue的响应性系统不要对某个对象进行转换或追踪其响应性的函数。当你有一个对象,并且你确定你不需要它成为响应性......
  • 解决Vue3项目警告:xxxis-declared-but-its-value-is-never-read
    刚刚在Vue3项目引入的一个组件Person下有红线,系统给出了警告,这是因为TypeScript会检查代码中未使用的变量,我定义了'Person'的变量,但是后续代码没有使用到它,从而导致Vetur(Vue的语法检查工具)给出了这个警告。解决方法:方法一:你可以删除或者在代码中使用'Person'变量或类型,以......
  • 项目冲刺1
    这个作业属于哪个课程软工4班这个作业要求在哪里作业要求1.会议任务分配:后端:配置、常量、工具类:杨宇航实体、前端接入接口:赵军、党威龙异常报错及拦截:赵军数据库操作:赵军、林华军、陈焕豪服务层:杨宇航、赵军启动及项目配置文件:党威龙前端页面、组......