typescript笔记symbol-TypeScript学习笔记

学习视频1:coderwhy

学习视频2:尚硅谷

文章目录类型注释数据类型2.类型类型别名及接口接口函数TS类型:任意类型| 未知类型 TS 类型:void 类型 TS 类型:从不类型(几乎没有使用过) TS 类型:Tuple(元组)语法详细信息

TypeScript 学习笔记概述

JavaScript的变量类型相当于动态类型,可以根据形参的变化而变化,而函数的参数没有设定类型,因此在定位错误和安全性方面还不够。

阐明

1. TS不能直接被JS解析器执行,需要编译成JS执行

2.虽然TS编译错误也可以编译成JS

1.什么是 TypeScript?

TypeScript 是类型安全的 JavaScript(带类型的 JavaScript 的超集),JavaScript 是弱类型,很多错误只能在运行时发现,而 TypeScript 提供了一套静态检查机制,可以在编译时检测错误

2.TypeScript有什么用?

1.支持强类型

2.类型注解:使用类型注解减少编译时静态类型检测

3.新增功能:泛型、接口、抽象类等。

TypeScript开发环境搭建

安装TS解析器:解析器是使用nodejs编写的 —> 先安装nodejs,我的node已经安装好了typescript笔记symbol,直接安装TypeScript

1.使用npm全局安装TypeScript

npm i -g typescript

2.检查是否安装成功

tsc --version

3、创建ts文件:后缀以ts结尾

使用tsc编译ts文件,进入文件的命令行,使用tsc文件名进行编译

tsc test.ts

TS手术效果图

1.通过tsc将TS代码编译为JS代码

2、在浏览器环境或者node环境运行JS代码

简化版

typescript笔记symbol

# 安装ts-node
npm install ts-node -g
# 按照ts-node依赖包tslib @types/node
npm install tslib @types/node - g
# node上运行js
node xxx.js
# node上运行ts
ts-node xxx.ts

类型注释

类型注释:主动告诉ts是什么类型

语法:变量名:数据类型

阐明

1. 冒号旁边的数据类型称为类型注释★

2.类型声明后,TS会进行类型检查

类型推断

类型推断:声明变量时,如果有直接参数,则会根据参数的类型推导出该变量的类型注解。

阐明

1. 如果声明变量时没有指定类型或形参typescript笔记symbol,TS解析器会手动判断该变量的类型为any

2.从右向左推测

3.let进行类型推断,派生类型为通用类型

const类型推导,推导为字面量类型

const height = 1.88 //1.88为heigth的类型,1.88是字面量类型
const height:1.88 //等价于

数据类型

总结

1.默认情况下,null和undefined是所有类型的子类型,这两种类型可以参数化为任何类型的变量

4、never类型是任意类型的子类型,也可以作为任意类型变量的参数

2.unknown是顶级类型,任何类型的值(never除外)都可以形式参数化为该类型的变量

3.any是顶级类型,任何类型的值(never除外)都可以形式参数化为该类型的变量,而且它也是所有类型的子类型,any相当于关闭类型检查

JS 的 7 种原始类型

let str: string = "jimmy";
let num: number = 24;
let bool: boolean = false;
let u: undefined = undefined;
let n: null = null;
let big: bigint = 100n;
let sym: symbol = Symbol("me"); 

阐明

1.默认情况下,null和undefined是所有类型的子类型。 您可以将 null 和 undefined 分配给其他类型。

如果在 tsconfig.json 中指定 "strictNullChecks":true,则 null 和 undefined 只能参数化为 void 及其各自的类型。

typescript笔记symbol

2.String是JavaScript中的字符串包装类

数组字段

//明确指定数组的类型注解写法1
let arr:string[] = ["1","2"];
//明确指定数组的类型注解写法2 泛型写法
let arr2:Array<string> = ["1","2"]

对象、对象和 {}

语法:{属性名称:属性值,属性名称:属性值...}

阐明

1.属性的数量和名称必须完全一致,不能多也不能少

2.分隔符分号和冒号都可以,换行可以省略分号,因为JS中换行会手动添加分号

3. 对象、对象和{}

let info: object = {name: 'why',age: 18}
info = [1,2,3]; //非原始类型
console.log(info);
info = 123; //报错

4.类型不加注解,默认为any

下面的写法在实际开发中不会使用,因为对象并不知道上述属性的类型,如果获取到对象中的属性就会报错。

//不使用
let info: object = {name: 'why',age: 18
}
console.log(info['age']) //报错/*
写法1
let info: {
name:string
age:number
}
写法2
let info: {name:string;age:number}
写法3
let info: {name:string,age:number}
*/
let info: {
name:string
age:number
} = {name: 'why',age: 18
}

typescript笔记symbol

1. 可选属性?

如果某个属性不确定,可以使用? 标识可选属性

语法:{属性名称:属性值,属性名称?:属性值}

2.type类型别名和interface接口

type用于定义类型别名(typealias)

//使用type声明对象
type IDType = string | number | boolean
//分号和逗号可以
type PointType = {x: number,y: number}
type PointType = {x: number;y: number}type PointType = {//换行可以省略分号,因为js中换行会自动添加分号x: numbery: number
}

接口可以看作是一种规则,socket的实现必须满足socket设定的规则

语法 接口 接口名称

//使用借口来声明对象
interface PointType{x:numbery:number
}
interface PointType{z:number
}
//多次声明需要都满足
const obj:myInterface = {//obj对象必须满足接口的规则有name和agex:1,y:2,z:3
}

类型别名和套接字之间的区别

相同点

不同之处

别名

1. 类型别名与套接字非常相似。 在定义对象类型时,大多数时候可以任意使用它们。

2. 插座中几乎所有的功能都可以在该类型中使用

1、使用范围更广