当前位置: 首页 > news >正文

二、TS的基础类型、类型注解

TS的基础类型、类型注解

TS的基础类型

js的数据类型:

  • 基础数据类型(7个)

    boolean string number null undefined BigInt Symbol

  • 引用数据类型(1个)

    Object

变量后面多了一个注解,注解为变量限定数据类型,TS语法中不同数据的注解方式:

let num: number = 123;
let bool: boolean = false;
let str: string = 'false';let a: null = null;
let b: undefined = undefined;let c: object = {};
let d: symbol = Symbol();
let e: bigint = BigInt(92341341);let f:object = {};let g = function(a:number, b:number): number {return a+b;
}
// 长度不可变,类型确定的数组
let x: [string, number] = ['1', 2];

基础类型注解具体

布尔值

注解为大写Boolean时代表一个接口(interface)。

注解为小写boolean时代表一种数据类型。

let bool1: boolean = false;
let bool2: Boolean = false;
let bool3: boolean = Boolean(0); //显示类型转化
let bool4: boolean = new Boolean(0); //提示错误,包装类不能给boolean类型变量赋值

数字

TS与JS里所有数字都是浮点数,浮点数类型:number,都支持十进制、十六进制数、二进制、八进制字面量。

let decLiteral: number = 6;
let hexLiteral: number = 0xf00d;
let binaryLiteral: number = 0b1010;
let octalLiteral: number = 0o744;let a1: number = -0;
let a2: number = +0;
let a3: number = Infinity;

字符串

TS与JS一样,使用双引号(“ ”)、单引号(‘’)、模板字符串(``)表示string类型。

let name: string = `Gene`;
let age: number = 37;
let sentence: string = `Hello, my name is ${ name }.I'll be ${ age + 1 } years old next month.`;

数组

数组可以通过

  • 注解的形式来表示。

  • 接口的形式来表示,因为数组是对象。

let list:number[] = [1,2,3]; //数组里面的值是number
let list4: Array<number> = [1,2,3]; //接口:简单理解:这里<number>描述对象的成员的类型let list1:(number | string)[] = [1,2,3, '4']; //联合类型注解:要求数组里面的值是number或string
let list2:number[][]  = [[1,2,3]];  //数组嵌套,且内部数组中的元素被要求为number类型
let list3:(number[] | string | number)[]  = [[1,2,3], '4', 6]; //要求数组内部的成员为:number类型数组,string值,number值

Any

为那些在编程阶段还不清楚类型的变量指定一个类型(指定为任意类型)。ts类型检查器不会起作用,相当于没有用ts。

let notSure: any = 4;
notSure = '123';
notSure = [];

unknown

安全的未知类型

unknown、any赋任何值都不会报错。但使用时,unknown会报错。

Void

void与any类型相反,不表示任何类型,**只在函数没有返回值时使用。**其他情况基本不用。

function warnUser(): void {console.log("This is my warning message");
}

Null 和 Undefined

除了自己类型外,默认情况下nullundefined是所有类型的子类型

let u: undefined = undefined;
let n: null = null;
let v: void = undefined;

然而,当你指定了--strictNullChecks标记,nullundefined只能赋值给void和它们各自。

Never

never类型表示的是那些永不存在的值的类型。报错、返回错误、无限循环。

// 返回never的函数必须存在无法达到的终点
function error(message: string): never {throw new Error(message);
}// 推断的返回值类型为never
function fail() {return error("Something failed");
}// 返回never的函数必须存在无法达到的终点
function infiniteLoop(): never {while (true) {}
}

Object

object表示非原始类型,也就是除numberstringbooleansymbolnullundefinedbigint之外的类型。

let obj1: object = {a: 1, b: 2};
let obj2: object = new Object();
let obj3: object = new Number();

补充:调出tsconfig.json

tsc -init

bigInt与symbol

  • bigint表示大数,在ts中的表现形式:
const bigNumber = BigInt(9007199254740991);
const bigNumber1:bigint = 9007199254740991n;
  • Symbol()返回唯一字符串,在对象中可以作为私有属性
const sym1: symbol = Symbol();
const sym2: symbol = Symbol();
console.log(sym1==sym2);//false 
//symbol返回唯一字符串,在对象中可以作为私有属性

补充:for of执行的本质就是调用对象上的迭代器方法,按照指定迭代顺序返回结果:

var obj = {[Symbol.iterator]: function*(){yield 1;yield 2;yield 3;yield 4;}
}
for (let i of obj){console.log(i);
}
1
2
3
4
http://www.lryc.cn/news/17248.html

相关文章:

  • 3年经验,3轮技术面+1轮HR面,拿下字节30k*16薪offer,这些自动化测试面试题值得大家借鉴
  • 分类预测 | MATLAB实现WOA-CNN-LSTM鲸鱼算法优化卷积长短期记忆网络数据分类预测
  • 自然语言处理(NLP)之近似训练法:负采样与层序Softmax
  • 关于上位机,C#
  • 华为OD机试真题 用 C++ 实现 - 字符串加密 | 多看题,提高通过率
  • 达梦8数据守护动态增加实时备库
  • 《代码整洁之道 - 程序员的职业素养》读书笔记
  • 八、CSS新特性二
  • Ubuntu国内镜像源
  • 3.Linux安装es单机版
  • C语言实现通讯录
  • Python-生成列表
  • 如何写好controller层
  • MySQL---视图的概念与操作
  • ChatGPT,会是现实世界的MOSS吗?
  • 安卓大厂面试题_安卓开发面经_Android大厂面经(22/30)之JNI全解析
  • 记一次docker虚拟机横向移动渗透测试
  • 计算机网络-物理层
  • Kubernetes Nginx 发布
  • 华为OD机试真题Python实现【非严格递增连续数字序列】真题+解题思路+代码(20222023)
  • 12-render函数
  • 磨金石教育摄影技能干货分享|杨元惺佳作欣赏——诗意人文
  • 在Pandas中通过时间频率来汇总数据的三种常用方法
  • 基于SPI的增强式插件框架设计
  • 176、【动态规划】leetcode ——1143. 最长公共子序列(C++版本)
  • 16行代码采集原神官网角色全图+全语音
  • Unity(二)--通过简单例子了解UGUI几个常用对象操作(Text,Image,Button)
  • 手写一个文件上传demo
  • 通过 Apifox Echo 了解 Content-Length
  • ESP32设备驱动-CPU频率设置