TypeScript学习笔记

本文介绍了TypeScript,一种基于JavaScript的编程语言,重点讲解了其类型系统、相对于JavaScript新增的功能,如类型声明、联合类型、any、unknown等,并展示了如何在代码中使用这些特性。
摘要由CSDN通过智能技术生成


一、TypeScript是什么?

  • 以JavaScript为基础构建的语言
  • 一个JavaScript的超集
  • 可以在任何支持JavaScript的平台制行
  • TypeScript扩展了JavaScript,并添加了类型
  • TS不能被JS解析器直接制行
  • TS编译后为JS

二、TS相较于JS增加了什么?

  • 类型
  • 支持ES的新特性
  • 强大的开发工具
  • 添加ES不具备的新特性
  • 丰富的配置选项

三、TS的类型声明

// 1.声明一个变量a,同时指定它的类型为number
let a:number
// 2.声明完变量直接进行赋值
let c:boolean=false;
// 3.如果变量的声明和赋值是同时进行的,TS可以自动对变量进行类型检测
let d=false;
d=true
// 4.声明函数(a、b、结果:三者的类型都是number)
function sum(a:number,b:number):number{
	return a+b;
}
let result=sum(123,456)

4、TS中的类型

代码如下(示例):

// 可以直接使用字面量进行类型声明
let a:10;
a=10;
// 可以使用 | 来连接多个类型(联合类型)
let b:"male" | "female";
b="male";
b="female";

let c:boolean | string;
c=true;
c="hello";

//any 表示的是任意类型,一个变量设置类型为any后相当于对该变量关闭了TS的类型检测
// 使用TS时,不建议使用any类型
// 显式any--->let d:any;
// 隐式any-->let d;(声明变量 如果不指定类型,则TS解析器会自动判断变量的类型为any)
let d;
d=10;
d="hello"


// d的类型是any,它可以赋值给任意变量eg:↓
let s:string;
s=d;

// unknow 表示未知类型
let e:unknown;
e=10;
e="hello";
e=true;
// unknow 实际上是一个"类型安全的any"
// unknow 类型的变量,不能直接赋值给其他变量。可以通过以下方法赋值
// 方法1:
if(typeof e==="string"){
    s=e;
}
// 方法2:类型断言,可以用来告诉解析器变量的实际类型
//两个语法:
// ①变量 as 类型 
s=e as string;
// ②<类型>变量
s=<string>e;

// void 用来表示空,以函数为例,就表示没有返回值的函数
function fn():void{

}

// never 表示永远不会返回结果
function fn2():never{
    throw new Error("报错了!")
}

//object表示一个js对象(不常用)
let a:object;
a={}
a=function(){
};

// {}用来指定对象中可以包含哪些属性
// 语法:{属性名:属性值,属性名:属性值}
// 在属性名后边加上?,表示属性是可选的
let b:{name:string,age?:number};
b={name:"孙悟空",age:18};

// [propName:string]:any 表示任意类型的属性
let c:{name:string,[propName:string]:any};
c={name:"猪八戒",age:18,gendrt:"男"};

// 设置函数结构的类型声明
// 语法:(形参:类型,形参:类型...)=>返回值
let d:(a:number,b:number)=>number;
d=function(n1,n2){
    return n1+n2;
}

// 数组的类型声明:
// 两种方法:类型[]、Array<类型>

// string[] 表示字符串数组
let e:string[];
e=["a","b","c"];

//number[]表示数值数组
let f:number[];

let g:Array<number>;
g=[1,2,3];

// 元组:固定长度的数组
// 语法:[类型,类型,类型]
let h:[string,number];
h=["hello",123]

// enum枚举
enum Gender{
    Male,
    Female
}
let i:{name:string,gender:Gender};
i={
    name:"孙悟空",
    gender:Gender.Male //"male"
}
// console.log(i.gender===Gender.Male);

// &表示同时
let j:{name:string}&{age:number};
// j={name:"孙悟空",age:18};


//类型的别名
type myType=1 | 2 | 3 |4 | 5;
let k: myType;
let l: myType;
let m: myType;

k=5


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值