一个项目学习Vue3---快速认识TypeScript

news2024/12/23 14:02:21

问题1:什么是TypeScript

TypeScript是一种由微软开发的开源编程语言,它是JavaScript的一个超集。TypeScript添加了静态类型检查功能,并且可以编译为纯JavaScript代码,使得开发者可以利用JavaScript的生态系统和工具。TypeScript的主要目标是增强JavaScript的可读性和可维护性,特别是在大型应用程序的开发过程中。

主要特点包括:

  1. 静态类型:TypeScript引入了静态类型系统,开发者可以为变量、函数参数、返回值等添加类型注解,编译器可以检查这些类型的正确性。

  2. ECMAScript标准支持:TypeScript支持最新的ECMAScript标准(例如ES6、ES7等),并且提供了额外的功能和语法糖。

  3. 工具支持:TypeScript集成了强大的开发工具支持,如代码补全、静态错误检查、重构等,这些功能使得大型项目的开发更加高效和安全。

  4. 跨平台:TypeScript可以编译为任何浏览器、操作系统和设备上运行的JavaScript,因此非常灵活。

总之,TypeScript通过引入静态类型检查和其他语言特性,提供了更强大、更可维护的JavaScript开发体验,尤其适用于大型和复杂的应用程序开发。

个人理解:Web万物皆三样东西HTML、CSS、JS,TS是JS的基础上利用Node,编译成JS,规范开发者语法规则使用

问题2:如何安装TypeScript

步骤1:使用npm安装typescript

npm安装方法一个项目学习Vue3---NVM和NPM安装-CSDN博客

npm install -g typescript
步骤2:创建第一个ts项目HelloTs.ts

在编辑器,将下面的代码输入到HelloTs.ts文件里:

function helloTs(text) {
    return "Hello, " + text;
}
​
let text = "TS";
​
document.body.innerHTML = helloTs(text);
步骤3:编译代码
tsc HelloTs.ts

同目录下面输出了一个JS文件,里面的内容和HelloTs.ts文件里面一毛一样,为什么呢?因为上面那个HelloTs.ts文件中的代码我是完全按照JS风格写的

js里面的内容

问题3:TS的类型是个啥

js中var可以定义一个全局变量 let可以定义一个局部变量,而TS在此基础上引入了基本数据类型,例如string、number等,下面是基本数据类型的定义

//布尔型
//表示逻辑值,可以是 true 或 false。
let isDone: boolean = false;
//数字类型
//表示整数或浮点数,与JavaScript中的 number 类型类似
let decimal: number = 6;
let hex: number = 0xf00d;
let binary: number = 0b1010;
let octal: number = 0o744;
//字符串型
//表示文本数据,可以使用单引号或双引号。
let color: string = "blue";
let fullName: string = `Bob Bobbington`;
//数组类型
//表示一个存储元素的数组,元素类型可以是任何类型。
let list: number[] = [1, 2, 3];
let list: Array<number> = [1, 2, 3]; // 使用数组泛型定义
//元组类型
//表示元素数量和类型的固定数组,各元素的类型不必相同。
let x: [string, number];
x = ["hello", 10]; // 合法
x = [10, "hello"]; // 错误,顺序必须匹配
//枚举类型
//表示一组命名的常数,默认情况下从0开始递增编号。
enum Color {Red, Green, Blue};
let c: Color = Color.Green;
//任意类型
//表示任意类型的值,可以绕过编译时类型检查,类似于普通的JavaScript变量。
let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false;
//空类型
//表示没有任何类型,通常用于函数没有返回值的情况。
function warnUser(): void {
    console.log("This is a warning message");
}
//Null 和 Undefined:
//TypeScript里,null 和 undefined 分别有自己的类型,可以赋值给其他类型(但是,--strictNullChecks 标记可以让 null 和 undefined 只能赋值给 void 和它们各自)。
let u: undefined = undefined;
let n: null = null;
//Never类型
//表示那些永不存在的值的类型。例如,抛出异常或无限循环的函数表达式的返回类型,或者总是会抛出异常的箭头函数表达式的返回类型。
function error(message: string): never {
    throw new Error(message);
}
​
function infiniteLoop(): never {
    while (true) {
    }
}
​

此时若你输入以下编码进行编译,则会报错Argument of type 'number[]' is not assignable to parameter of type 'string'.

function helloTs(text : string) {
    return "Hello, " + text;
}
​
let text = [1,3,4,5];
​
document.body.innerHTML = helloTs(text);

问题4:TS的接口是个啥

TS中的接口和JAVA后端代码中的接口类似,是一种规范

interface User {
    firstName: string;
    lastName: string;
    //:string 表示返回值为string类型
    say(name: string) :string;
}
let user:User = {
    firstName:"张三",
    lastName:"李四",
    say(name: string) :string{
        return `Hello, ${name}!`;        
    }
}
function greeter(user: User) :string{
    return user.say(user.firstName)
}
​
document.body.innerHTML = greeter(user);

编译后的代码为:

var user = {
    firstName: "张三",
    lastName: "李四",
    say: function (name) {
        return "Hello, ".concat(name, "!");
    }
};
function greeter(user) {
    return user.say(user.firstName);
}
document.body.innerHTML = greeter(user);

TS中使用:来表示继承的User实体,但是你也可以不用非得和java一样写implements去继承原来的接口

interface User {
    firstName: string;
    lastName: string;
    say(name: string) :string;
}
//此处User不写效果是一样的
let user = {
    firstName:"张三",
    lastName:"李四",
    say(name: string) :string{
        return `Hello, ${name}!`;        
    }
}
function greeter(user: User) :string{
    return user.say(user.firstName)
}
​
document.body.innerHTML = greeter(user);

问题5:TS的类是个啥

TS中的类和JS中的类大体是一直的,他并没有明显的区别,不过好多只用JS的小伙伴再不写Vue等项目时,基本用不到这玩意

class Animal {
    name: string;
    //构造器
    constructor(name: string) {
        this.name = name;
    }
​
    move(distance: number) {
        console.log(`${this.name} moved ${distance} meters.`);
    }
}
​
let animal = new Animal("老虎");
 

问题6:看了这么多就是不会写TS咋办

没关系,你可以熟练的使用你熟悉的js写,反正ts是js的超集,一样运行,废话连篇。。。

关注公众号:资小库,问题快速答疑解惑

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1865259.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

拉普拉斯变换与卷积

前面描述 卷积&#xff0c;本文由卷积引入拉普拉斯变换。 拉普拉斯变换就是给傅里叶变换的 iωt 加了个实部&#xff0c;也可以反着理解&#xff0c;原函数乘以 e − β t e^{-\beta t} e−βt 再做傅里叶变换&#xff0c;本质上都是傅里叶变换的扩展。 加入实部的拉普拉斯变…

门店客流统计)

门店客流统计 代码部分效果 代码部分 import cv2 import numpy as np from tracker import * import cvzone import timebg_subtractor cv2.createBackgroundSubtractorMOG2(history200, varThreshold140)# Open a video capture video_capture cv2.VideoCapture(r"sto…

【JavaScript】DOM编程

目录 一、什么是DOM编程 二、获取DOM树上的元素结点 1.直接获取 2.间接获取 三、操作获取到的DOM元素结点 1.操作元素的属性 2.操作元素的行内样式 3.操作元素中间的文本 四、增删DOM元素结点 一、什么是DOM编程 开发人员写好的网页文件在生产环境中是需要部署在Web服务器上的。…

机器人控制系列教程之动力学建模(1)

简介 机器人动力学是对机器人机构的力和运动之间关系与平衡进行研究的学科。机器人动力学是以机器人运动为基础&#xff0c;研究在运动过程中连杆与连杆之间、连杆与工件之间力或力矩等关系。 分类&#xff1a; 根据研究方向的不同&#xff0c;机器人的动力学分析也分为正、逆…

洗地机哪个品牌好?超热门五大尖货洗地机推荐

随着人们生活水平的提高&#xff0c;卫生健康的意识也在逐渐提升&#xff0c;日常的家庭清洁已经成为了生活中必不可少的一部分。在智能清洁家电中&#xff0c;洗地机凭借其出色的性能和优秀的设计成为了备受关注的产品之一。本文将带大家如何挑选洗地机&#xff0c;以及看看目…

python实现可视化大屏(django+pyechars)

1.实现效果图 2.对数据库进行迁移 python manage.py makemigrations python manage.py migrate 3.登录页面 {% load static%} <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport"…

pandas合并,拆分excel

目录 一:按照列进行拆分 二:将某几列的数据写入新excel 三:合并两个sheet数据到一个excel的一个sheet中 我们以商品销售明细为例,说明下excel的数据拆分和合并,我们的原始数据如下: 一:按照列进行拆分 现在我们需要统计下是否配送和支付方式为维度进行分组以后得数据…

python--序列化模块json与pickle

什么叫序列化&#xff1f; 将原本的字典、列表等内容转换成一个字符串的过程就 叫做序列化。 多用的两个序列化模块&#xff1a;json与pickle json&#xff0c;用于字符串 和 python数据类型间进行转换 pickle&#xff0c;用于python特有的类型 和 python的数据类型间进行转换 …

教师资格证考试面试报名流程

文章目录 前言面试报名流程一、登录官网二、选择报考省份三、注册报名账号四、确认考试承诺五、填报个人信息六、上传个人照片七、查看个人信息八、面试报名九、等待审核十、考试缴费最后&#xff08;必看&#xff09;附录1. 中小学教师资格考试网2. 广东省教资考试报名通知&am…

Linux:系统引导过程与服务控制

目录 一、linux 系统引导过程 1.1、引导过程总览 1.2、系统初始化进程 &#xff08;centos 6和7 的区别&#xff09; 1.2.1、centos 6 的引导过程 init 进程 1.2.2、centos 7(systemd进程) 二、MBR、GRUB菜单、忘记密码故障修复 2.1、修复MBR扇区故障 模拟故障 重启…

webstorm无法识别tsconfig.json引用项目配置文件中的路径别名

问题 vite项目模板中&#xff0c;应用的ts配置内容写在tsconfig.app.json文件中&#xff0c;并在tsconfig.json通过项目引用的方式导入 {"files": [],"references": [{"path": "./tsconfig.app.json"},{"path": "./t…

小白学python(第二天)

哈喽&#xff0c;各位小伙伴们我们又见面了&#xff0c;昨天的文章吸收得如何&#xff1f;可有不懂否&#xff1f;如有不懂可以在品论区留言哦&#xff0c;废话不多说&#xff0c;开始今天的内容。 字符及字符串的续讲 字符&#xff1a;英文字母&#xff0c;阿拉伯数字&#x…

【QT】设置QTabWidget样式:上、下边线的显示与去除

目录 0.简介 1.环境 2.详细介绍 2.1我的原代码和显示效果 2.2 去掉QTabWidget的边框 2.3 单独留下边线 2.3.1 法一&#xff1a;通过【this->setDocumentMode(true);】设置下边线 2.3.2 通过【QTabWidget::pane】设置下边线 2.4单独设置上边线 2.5 优化界面tab 2.…

ESRW-102打滑开关 JOSEF约瑟 调试简单,安装灵活

ESRW-102打滑开关是一种用于监测设备转速或带速的传感器&#xff0c;尤其适用于皮带输送机等转动设备&#xff0c;用于检测和处理打滑、断裂等机械故障。以下是关于ESRW-102打滑开关的详细介绍&#xff1a; 用途 主要用于皮带输送机、提升机、螺旋输送机等转动设备&#xff0…

Charles 忽略IP授权 Allow 弹窗

当有新的设备连接到 Charles 时&#xff0c;会出现如下弹框确认是否允许&#xff0c;如果希望允许所有客户端连接不再有提示&#xff0c;可以通过添加模糊IP规则来实现。 配置方法&#xff1a;Proxy > Access Control Settings 中添加 0.0.0.0/0 和 ::/0 即可&#xff0c;…

DLS策略洞察:如何应对AI数据中心网络交换机市场的爆发式增长?

摘要&#xff1a; 随着AI技术的发展和应用&#xff0c;AI数据中心对网络交换机的需求日益增加。摩根士丹利预计&#xff0c;2023-2026年间&#xff0c;AI数据中心网络交换机的收入复合年增长率&#xff08;CAGR&#xff09;将达到55%。本文将详细分析AI数据中心网络交换机市场…

高德地图开发隐藏logo和标志文字

vue开发隐藏引用高德地图的logo和文字方法 //scss <style langscss scoped>:deep(.amap-logo), :deep(.amap-copyright) {display: none !important; }</style>

环路滤波器

块效应产生的原因 块效应指视频边界不连续的变化,我们在观看视频的时候,在运动剧烈的场景常能观察到图像出现小方块,小方块在边界处呈现不连续的效果(如下图),这种现象被称为块效应(blocking artifact)。 造成这种现象的主要原因有两点: DCT量化误差导致运动补偿导致…

C# Winform中制作精美控件(2)

仓库温度监控系统重有个控件&#xff0c;就是温度监控&#xff0c;还是比较精美的&#xff0c;那么我们来看看制作的要点有哪些。 前面我们讨论过布局和圆角按钮。这节主要关注温度计控件 1. 布局&#xff1a; 两个Panel将界面分位上下两个部分&#xff0c;Dock.Top Dock.Fil…

Web3 ETF 的软件开发框架

Web3 ETF 的软件开发框架主要包含以下几个方面&#xff0c;需要说明的是&#xff0c;Web3 ETF 仍处于早期发展阶段&#xff0c;相关技术和标准尚未成熟。在开发 Web3 ETF 时&#xff0c;需要谨慎评估风险&#xff0c;并做好安全防范措施。北京木奇移动技术有限公司&#xff0c;…