发表于: 2021-11-07 23:32:02
0 1069
学习TS语法
定义类型
ts中,使用:指定变量的类型,:的前后有没有空格都可以
定义:let isDone:boolean = false
检查
ts只会进行静态检查,如果发现有错误,编译的时候就会报错
数据类型
原始数据类型
构造函数Boolean、String、Number创建的对象是对象,不是基本类型
注意:undefined和null是所有类型的子类型,undefined和null类型的变量可以赋值给其他类型的变量
let num:number = undefined;//正确
let u:void;
let num:number = u;//错误
void
js没有空值的概念,在ts中,可用void表示没有任何返回值的函数
function alertName():void{
alert("name");
}
用void声明变量的时候,只能赋值为undefined和null
let name:void = undefined;
any任意值
用来表示允许赋值为任意类型
普通类型,在赋值过程中改变类型是不被允许的
任意值的属性和方法:
在任意值上访问任何属性和方法都是允许的
声明一个变量为任意值后,对它的操作,返回的内容的类型都是任意值
变量在声明的时候,未指定其类型,那么他会被识别为任意值类型
类型推论
ts会在没有明确的指定类型的时候推出一个类型,这就是类型推论
let name = "";
name = 3;//错误
联合类型
联合类型:取值可以为多种类型种的一种
联合类型使用|分隔每个类型
let favoriteNumber:string|number;
favoriteNumber = 'one';
favoriteNumber = 1;//正确
访问联合类型的属性或方法:只能访问此类型的所有类型里共有的属性或方法
类型断言
用来手动指定一个值的类型
语法
<类型>值
值 as 类型:react中的jsx语法的ts版必须是用这种
例子1:获取something.length会报错
function getLength(something:string|number):number{
if(something.length){
return something.length;
}
}
例子2:类型断言,将something断言成string
function getLength(something:string|number):number{
if(<string>something.length){
return (<string>something).length;
}
}
类型断言的用法如上,在需要断言的变量前加上 即可
类型断言不是类型转换,断言成一个联合类型中不存在的类型是不允许的
声明文件
declare var 声明全局变量
declare function 声明全局方法
declare class 声明全局类
declare enum 声明全局枚举类型
declare namespace 声明(含有子属性的)全局对象
interface 和 type 声明全局类型
export 导出变量
export namespace 导出(含有子属性的)对象
export default ES6 默认导出
export = commonjs 导出模块
export as namespace UMD 库声明全局变量
declare global 扩展全局变量
declare module 扩展模块
/// 三斜线指令
评论