TypeScript
相对于es6,typeScript最大的改善是添加了类型系统。
类型检查的好处有
①有助于代码的编写,因为它可以在编译期预防bug;
②有助于代码的阅读,因为它可以清晰的表明你的意图;
接下来让我们看看TypeScript工具带来的高级功能。 给 person函数的参数添加: string类型注解,如下:
function greeter(person: string) { //string类型注解
return "Hello, " + person;
}
let user = "Jane User";
document.body.innerHTML = greeter(user);
在构造函数的参数上使用public等同于创建了同名的成员变量。
基础属性
let isDone: boolean = false;//boolean
let name: string = `Gene`;//string
let age: number = 37;//number
数组
① let list: number[] = [1, 2, 3];
② let list: Array<number> = [1, 2, 3];
元组 Tuple
let x: [string, number];
x = ['hello', 10]; // OK
x = [10, 'hello']; // Error
当访问一个越界的元素,会使用联合类型替代:(我的理解就是 没定义类型的额外的可以使用已经定义类型的公共方法 除此之外会报错)
x[3] = 'world'; // OK, 字符串可以赋值给(string | number)类型
console.log(x[5].toString()); // OK, 'string' 和 'number' 都有 toString
x[6] = true; // Error, 布尔不是(string | number)类型
enum类型是对JavaScript标准数据类型的一个补充(枚举)
枚举类型提供的一个便利是你可以由枚举的值得到它的名字。 例如,我们知道数值为2,但是不确定它映射到Color里的哪个名字,我们可以查找相应的名字:
enum Color {Red = 1, Green = 2, Blue = 4}
let c: Color = Color.Green;
enum Color {Red = 1, Green, Blue}
let colorName: string = Color[2];
alert(colorName); // 显示'Green'因为上面代码里它的值是2
Any
我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。(任何类型)
Void
某种程度上来说,void类型像是与any类型相反,它表示没有任何类型。 当一个函数没有返回值时,你通常会见到其返回值类型是 void:
类型断言
类型断言有两种形式。
let someValue: any = "this is a string";
其一是“尖括号”语法:
let strLength: number = (<string>someValue).length;
另一个为as语法:
let strLength: number = (someValue as string).length;
两种形式是等价的。 至于使用哪个大多数情况下是凭个人喜好;然而,当你在TypeScript里使用JSX时,只有 as语法断言是被允许的.
接口
interface LabelledValue { //必填
label: string;
}
interface SquareConfig {//可选
color?: string;
width?: number;
}
interface Point { //只读 不能修改
readonly x: number;
readonly y: number;
}
interface StringArray { //索引定义 类型
[index: number]: string;
}
interface Shape { //定义接口
color: string;
}
interface Square extends Shape {//接口继承
sideLength: number;
}
interface PenStroke { //接口继承
penWidth: number;
}
interface Square extends Shape, PenStroke { //多接口继承
sideLength: number;
}
成员都默认为 public
class Animal {
public name: string;
public constructor(theName: string) { this.name = theName; }
public move(distanceInMeters: number) {
console.log(`${this.name} moved ${distanceInMeters}m.`);
}
}
当成员被标记成 private时,它就不能在声明它的类的外部访问。比如:
class Animal {
private name: string;
constructor(theName: string) { this.name = theName; }
}
new Animal("Cat").name; // 错误: 'name' 是私有的.
protected修饰符与 private修饰符的行为很相似,但有一点不同, protected成员在派生类中仍然可以访问。例如
class Person {
protected name: string;
constructor(name: string) { this.name = name; }
}
class Employee extends Person {
private department: string;
constructor(name: string, department: string) {
super(name)
this.department = department;
}
public getElevatorPitch() {
return `Hello, my name is ${this.name} and I work in ${this.department}.`;
}
}
let howard = new Employee("Howard", "Sales");
console.log(howard.getElevatorPitch());
console.log(howard.name); // 错误
你可以使用 readonly关键字将属性设置为只读的。 只读属性必须在声明时或构造函数里被初始化。
class Octopus {
readonly name: string;
readonly numberOfLegs: number = 8;
constructor (theName: string) {
this.name = theName;
}
}
let dad = new Octopus("Man with the 8 strong legs");
dad.name = "Man with the 3-piece suit"; // 错误! name 是只读的.
函数
书写完整函数类型
let myAdd: (x: number, y: number) => number =
function(x: number, y: number): number { return x + y; };
函数类型包含两部分:参数类型和返回值类型。 当写出完整函数类型的时候,这两部分都是需要的。 我们以参数列表的形式写出参数类型,
为每个参数指定一个名字和类型。 这个名字只是为了增加可读性。 我们也可以这么写:
let myAdd: (baseValue: number, increment: number) => number =
function(x: number, y: number): number { return x + y; };
泛型
function identity(arg: any): any { //不泛型写法
return arg;
}
function identity<T>(arg: T): T { //泛型写法
return arg;
}
我们定义了泛型函数后,可以用两种方法使用。 第一种是,传入所有的参数,包含类型参数:
let output = identity<string>("myString"); // type of output will be 'string'
这里我们明确的指定了T是string类型,并做为一个参数传给函数,使用了<>括起来而不是()。
第二种方法更普遍。利用了类型推论 -- 即编译器会根据传入的参数自动地帮助我们确定T的类型:
let output = identity("myString"); // type of output will be 'string'
Symbols介绍
自ECMAScript 2015起,symbol成为了一种新的原生类型,就像number和string一样。
let sym2 = Symbol("key");
let sym3 = Symbol("key");
sym2 === sym3; // false, symbols是唯一的
let sym = Symbol();
let obj = {
[sym]: "value"
};
console.log(obj[sym]); // "value"
拥有很多方法 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol
模块引入导出以前看过就不记录了
相关推荐
基于Quartus II软件的FPGA综合实验——多功能数字钟
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、设计要求二、设计原理三、设计过程1.数码管扫描模块2.计时模块3.闹钟模块4.闹钟响铃模块5.数码管显示模块6.整点报时功能7.模式选择模块(计时器主控电路)四、实验中遇到的困难及解决方案五、总结 前言 FPGA综合实验——多功能数字钟 基于Quartus II软件 一、设计要求 设计一个能进行时、分、秒计时的十二小时制或二十四小时制的数字钟,并具有定时与闹钟功能,能在设定的时间发出闹铃音,能非常方便地对小时、分钟和秒进.
TS基础知识
搭配vue3的js的超集,文章包含ts的基本语法
FoundationPose复现及Realsense应用
FoundationPose是一个统一的基础模型,用于6D对象姿态估计和跟踪,支持基于模型和无模型的设置。在测试时可以立即应用于未见过的新对象,无需微调,只要给出其CAD模型,或者捕获少量RGBD参考图像。得益于统一框架,下游姿态估计模块在两种3D模型设置中都是相同的,当没有CAD模型时,使用神经隐式表示进行高效的新视角合成。通过大规模合成训练,辅以大型语言模型(LLM)、一种基于transformer的新架构和对比学习公式,实现了强大的泛化能力。
TS基础知识点梳理(TS环境配置,变量,数据类型,联合类型,交叉类型等)
我们确定传入的参数是有值的,这个时候我们可以使用非空类型断言:非空断言使用的是!,表示可以确定某个标识符是有值的,跳过ts在编译阶段对它的检测;我们通过在类型注解中编写 对象类型 和 联合类型,但是当我们想要多次在其他地方使用时,就要编写多次。在给定的执行路径中,我们可以缩小比声明时更小的类型,这个过程称之为 缩小( Narrowing );unknown是TypeScript中比较特殊的一种类型,它用于描述类型不确定的变量。TypeScript的类型系统允许我们使用多种运算符,从现有类型中构建新类型。
别再浪费NFC了!手把手教你用Android手机模拟门禁卡(Mifare Classic破解教程)
本文深入探讨Android NFC技术的核心原理与创新应用,教你如何利用手机模拟门禁卡(Mifare Classic破解教程),解锁智能生活的无限可能。涵盖NFC标签类型解析、HCE开发实战及安全实践,让你的Android设备成为数字生活的万能钥匙。
光度立体三维重建——光源标定
光源标定的目的是为了确定光源方向或强度,一般利用物体表面的明暗信息、阴影信息或者反射特性三类信息中的其中一种即可,也可以将三种信息结合。采用不同标定物,是利用不同标定物的反射特性获取更加精确的光源信息。
TypeScript入门
TypeScript具有类型系统,且是JavaScript的超集。它可以编译成普通的JavaScript代码。TypeScript支持任意浏览器,任意环境,任意系统并且是开源的。
Java面试题大全(2025版)
== 对于基本类型来说是值比较,对于引用类型来说是比较的是引用;而 equals 默认情况下是引用比较,只是很多类重新了 equals 方法,比如 String、Integer 等把它变成了值比较,所以一般情况下 equals 比较的是值是否相等。
java编程者快速掌握ts变量类型
相较于JS而言,TS拥有了静态类型,更加严格的语法,更强大的功能;同样的功能,TS的代码量要大于JS,但由于TS的代码结构更加清晰,变量类型更加明确,在后期代码的维护中TS却远远胜于JS。它对JS进行了扩展,向JS中引入了类型的概念,并添加了许多新的特性。TS完全兼容JS,换言之,任何的JS代码都可以直接当成JS使用。当对变量的声明和赋值是同时进行的,TS编译器会自动判断变量的类型。所以如果你的变量的声明和赋值时同时进行的,可以省略掉类型声明。// 函数声明,指定参数类型和返回值类型。
hwasan实例分析踩内存之一:camx进程stack tag-mismatch的三种解决方案
hwasan实例分析踩内存之一:camx进程stack tag-mismatch的三种解决方案。
基于Simulink的永磁同步电机三闭环(位置/速度/电流)伺服仿真
本文详细介绍了基于Simulink的永磁同步电机三闭环伺服控制系统的设计与实现,针对机器人关节控制场景。系统采用位置环(外环)、速度环(中环)和电流环(内环)的嵌套结构,通过精确的带宽匹配(电流环1kHz、速度环200Hz、位置环20Hz)实现亚微米级位置跟踪。文中提供了完整的Simulink建模步骤,包括主电路搭建、三环PI控制器实现及坐标变换模块,并验证了系统性能:阶跃响应时间35ms,位置误差<0.05°,正弦跟踪误差<0.15°,负载突加恢复时间0.08s。最后提出了参数自适应整定、前馈
02 ts 变量定义,类型
ts学习
会计引擎:交易与核算分离的前世今生
一、为什么需要会计引擎 金融产品的设计,一如一块硬币需要兼顾两面:一面是为客户提供好的金融服务,满足客户支付结算、借贷、资产保值增值等方面的需求,并在这个过程中,以数字化的方式做好客户资产的登记,登记的载体,则是“分户”或“台账”,如客户存款户,是一种典型的分户--资金的增减变化都在一个账户中进行体现,而客户购买的银行理财,因为收益率、期限、投资标的不同,每一笔持有就形成一行记录,即为“台账”--这当然是不严谨但相对形象的表述。但是,“分户”和“台账”并没有必然的区别,以贷款为例,一些银行仍然存在所谓“
【TypeScript学习】TypeScript基础学习总结一
学习TypeScript基础的一些总结回顾
OV9734 DATASHEET,完整规格书
OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
TypeScript 学习教程总结
经过一段时间对 TypeScript 的深入学习,我们已经探索了这个强大编程语言的诸多方面。在此,对整个学习过程进行一个全面的总结,以便更好地梳理知识脉络,也为刚接触或正在学习 TypeScript 的朋友们提供一个参考。
数学建模模型总结
这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!
typescript学习计划
了解TypeScript的基础知识,并将其应用于JavaScript代码。:掌握JavaScript的高级概念,为学习TypeScript打下基础。:掌握TypeScript的高级特性,并开始应用于实际项目。:了解HTML、CSS和JavaScript的基础知识。:通过实际项目巩固所学知识,并持续学习前端开发的新技术。
廖雪峰Python教程[完整版]
廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白
TypeScript 学习
如果不想准备本地环境, 只是学习, 可以使用。初始化 TypeScript 项目, 生成。
Typescript学习指南
官网学习 速成学习版 入门学习版 中文学习版 深入学习版 书写TS指南
【学习】一起加入重学 TypeScript 学习小组
最近加入朋友【重学TypeScript】学习小组的群,深入学习TypeScript,收获很大。有兴趣一起学习的朋友,欢迎加我微信私聊我。...
TypeScript 学习手册
TypeScript 教程精简版,可用于复习和面试。
【学习】一起加入 TypeScript 学习小组
今天继续邀请大家加入【重学TypeScript】学习小组。有兴趣一起学习TypeScript的朋友,欢迎加我微信私聊我。这里分...
2万+



被折叠的 条评论
为什么被折叠?



