首页 > 其他分享 >typescript 数据类型

typescript 数据类型

时间:2022-11-04 18:56:22浏览次数:64  
标签:typescript undefined never 数据类型 number num let 类型

一、是什么

typescript 和 javascript几乎一样,拥有相同的数据类型,另外在javascript基础上提供了更加实用的类型供开发使用

在开发阶段,可以为明确的变量定义为某种类型,这样typescript就能在编译阶段进行类型检查,当类型不合符预期结果的时候则会出现错误提示

二、有哪些

typescript 的数据类型主要有如下:

  • boolean(布尔类型)
  • number(数字类型)
  • string(字符串类型)
  • array(数组类型)
  • tuple(元组类型)
  • enum(枚举类型)
  • any(任意类型)
  • null 和 undefined 类型
  • void 类型
  • never 类型
  • object 对象类型

boolean

布尔类型

let flag:boolean = true; // flag = 123; // 错误 flag = false//正确

 

number

数字类型,和javascript一样,typescript的数值类型都是浮点数,可支持二进制、八进制、十进制和十六进制

let num:number = 123; // num = '456'; // 错误 num = 456//正确

 

进制表示:

let decLiteral: number = 6; // 十进制 let hexLiteral: number = 0xf00d; // 十六进制 let binaryLiteral: number = 0b1010; // 二进制 let octalLiteral: number = 0o744; // 八进制 

 

string

字符串类型,和JavaScript一样,可以使用双引号(")或单引号(')表示字符串

let str:string = 'this is ts'; str = 'test'

 

作为超集,当然也可以使用模版字符串``进行包裹,通过 ${} 嵌入变量

let name: string = `Gene`; let age: number = 37; let sentence: string = `Hello, my name is ${ name } 

 

array

数组类型,跟javascript一致,通过[]进行包裹,有两种写法:

方式一:元素类型后面接上 []

let arr:string[] = ['12', '23']; arr = ['45', '56']; 

 

方式二:使用数组泛型,Array<元素类型>

let arr:Array<number> = [1, 2]; arr = ['45', '56'];

 

tuple

元祖类型,允许表示一个已知元素数量和类型的数组,各元素的类型不必相同

let tupleArr:[number, string, boolean]; tupleArr = [12, '34', true]; //ok typleArr = [12, '34'] // no ok

 

赋值的类型、位置、个数需要和定义(生明)的类型、位置、个数一致

enum

enum类型是对JavaScript标准数据类型的一个补充,使用枚举类型可以为一组数值赋予友好的名字

enum Color {Red, Green, Blue} let c: Color = Color.Green;

 

any

可以指定任何类型的值,在编程阶段还不清楚类型的变量指定一个类型,不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查,这时候可以使用any类型

使用any类型允许被赋值为任意类型,甚至可以调用其属性、方法

let num:any = 123; num = 'str'; num = true

 

定义存储各种类型数据的数组时,示例代码如下:

let arrayList: any[] = [1, false, 'fine']; arrayList[1] = 100

 

null 和 和 undefined

 JavaScript 中 null 表示 "什么都没有",是一个只有一个值的特殊类型,表示一个空对象引用,而undefined表示一个没有设置值的变量

默认情况下nullundefined是所有类型的子类型, 就是说你可以把 null 和 undefined 赋值给 number 类型的变量

 let num:number | undefined; // 数值类型 或者 undefined console.log(num); // 正确 num = 123; console.log(num); // 正确

 

但是ts配置了--strictNullChecks标记,nullundefined只能赋值给void和它们各自

void

用于标识方法返回值的类型,表示该方法没有返回值。

 function hello(): void {     alert("Hello Runoob"); }

 

never

never是其他类型 (包括null和 undefined)的子类型,可以赋值给任何类型,代表从不会出现的值

但是没有类型是 never 的子类型,这意味着声明 never 的变量只能被 never 类型所赋值。

never 类型一般用来指定那些总是会抛出异常、无限循环

let a:never; a = 123; // 错误的写法   a = (() => { // 正确的写法   throw new Error('错误'); })()   // 返回never的函数必须存在无法达到的终点 function error(message: string): never {     throw new Error(message); }

 

object

对象类型,非原始类型,常见的形式通过{}进行包裹

let obj:object; obj = {name: 'Wang', age: 25};

 

三、总结

javascript基本一致,也分成:

  • 基本类型
  • 引用类型

在基础类型上,typescript增添了voidanyemum等原始类型

标签:typescript,undefined,never,数据类型,number,num,let,类型
From: https://www.cnblogs.com/SHGG/p/16858786.html

相关文章

  • JS数据类型转换规则
    JS的数据类型基本数据类型(七种)NumberStringBooleanNullUndefinedSymbolSymbol详解BigIntBigInt数据类型的目的是比Number数据类型支持的范围更大的整数值以......
  • [Typescript] Function scope in typescript
    Wehavethefollowingcodewhichhascompileerror:asyncfunctionreadData(event?:Event|unknown):Promise<void>{//...lettext:string|undef......
  • TypeScript常用类型(基本类型,数组类型,类型别名type ,函数类型,对象类型,接口interface,元组
    原始基本类型letage:number=18;letmyname:string="tom";letflag:boolean=true;leta:null=null;letb:undefined=undefined;letc:symbol......
  • undefined与null的区别,以及数据类型检测
    title:undefined与null的区别,以及数据类型检测的方法1.undefined与null的区别由来,为什么只有JS才有undefined这种数据类型呢JS作者在设计时也是先设计了null,用来表示......
  • 数据类型拓展
    publicclassDemo03{publicstaticvoidmain(String[]args){//整数拓展:进制二进制开头0b十进制八进制0十六进制0xinti=10......
  • 基本数据类型在内存中的存储
    先用高字节在用低字节整形存储都是以补码存储不同位数处理器可处理的位数不同决定了寄存器宽度是否大于一个字节就会有多个字节如何安排的问题就出现了大小端......
  • C# 数据类型取值范围
    bool型为int型,一般认为占4个字节,取值TRUE/FALSE/ERROR。sbyte型为有符号8位整数,占1个字节,取值范围在-128~127之间。bytet型为无符号16位整数,占2个字节,取值范围在0~255之间......
  • 数据类型的拓展使用
    Lessismore代码要精简易读整数拓展//二进制0b十进制八进制0十六进制0xinti=10;inti2=010;//八进制0inti3=0x10;//......
  • [Typescript] 86. Medium - ToPrimitive
    Convertapropertyoftypeliteral(labeltype)toaprimitivetype.ForexampletypeX={name:'Tom',age:30,married:false,addr:{home:'12......
  • Typescript 编译模块
    Typescript有一种统一的语言处理模块的导入和导出,在编译时可以根据最终js文件应用到哪一种模块系统,根据模块系统的规范,生成代码原始Ts文件importm=require("mod");......