首页 > 其他分享 >2、数据类型

2、数据类型

时间:2023-12-04 19:56:13浏览次数:27  
标签:string 数据类型 number let tom 类型 name

typescript中为了使编写的代码更规范,更有利于维护,增加了类型校验,在typescript中主要给我们提供了以下数据类型

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

类型定义

ts规定定义变量时必须制定类型:

let flag:boolean = true;
flag = 123;    //报错

定义字符串、数字类型与上面的一样

定义数组类型

第一种:

let arr:number[] = [1,2,3,4];        //定义数字类型的数组
console.log(arr);   //[1,2,3,4]

let arr1:{id:number,name:string}[] = [      //定义对象类型数组
    {id:1,name:'Mike'}
]

第二种(数组泛型):

let arr:Array<number> = [1,2,3,4];        //定义数字类型的数组
console.log(arr);   //[1,2,3,4]

第三种(用接口表示数组):

interface NumberArray {
    [index: number]: number;
}
let fibonacci: NumberArray = [1, 1, 2, 3, 5];

NumberArray 表示:只要索引的类型是数字时,那么值的类型必须是数字。这种方式定义起来比较麻烦,所以不常用。

元组类型

数组合并了相同类型的对象,而元组(Tuple)合并了不同类型的对象。

定义一对值分别为 stringnumber 的元组:

let tom: [string, number] = ['Tom', 25];

当赋值或访问一个已知索引的元素时,会得到正确的类型:

let tom: [string, number];
tom[0] = 'Tom';
tom[1] = 25;

tom[0].slice(1);
tom[1].toFixed(2);

也可以只赋值其中一项:

let tom: [string, number];
tom[0] = 'Tom';

但是当直接对元组类型的变量进行初始化或者赋值的时候,需要提供所有元组类型中指定的项。

let tom: [string, number];
tom = ['Tom'];

// Property '1' is missing in type '[string]' but required in type '[string, number]'.

枚举类型

enum类型是对JavaScript标准数据类型的一个补充。 像C#等其它语言一样,使用枚举类型可以为一组数值赋予友好的名字。

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

默认情况下,从0开始为元素编号。 你也可以手动的指定成员的数值。

enum Color {'Red' = 1, Green=2, Blue}
let c: Color = Color.Red;              //1
let c: Color = Color.Green;
console.log(c);          //2
//定义
enum 枚举名{
	标识符[=整型常数],
	标识符[=整型常数],
	.....
	标识符[=整型常数],
};

任意类型

任意值(Any)用来表示允许赋值为任意类型。

var oBox:any = document.getElementById('box');
oBox.style.color = 'red';

变量如果在声明的时候,未指定其类型,那么它会被识别为任意值类型

null和undefined

var num:undefined;
console.log(num);   //undefined

//定义多个类型
var num:number | undefined | null;
num = 123;
console.log(num);   //123

void类型

typescript中表示没有任何类型,一般用于定义方法的时候没有返回值。

function run():void{
	console.log('run');
}
run();

如果一个方法的返回值为数字,可以改为function run():number{}

never类型

never类型是其他类型(包括nullundefined的子类型,表示的是那些永不存在的值的类型。

never类型是任何类型的子类型,也可以赋值给任何类型;但是没有任何类型可以赋值给never类型(除了never本身之外)

对象的类型 -- 接口

typescript中,我们使用接口(interface)来定义对象的类型。

interface Person {
    name: string;
    age: number;
}

let tom: Person = {
    name: 'Tom',
    age: 25
};

Person接口约束了tom对象,tom对象里的属性必须和接口中的保持一致

可选属性

加个?号表示可选属性

interface Person {
    name: string;
    age?: number;    //可选属性
}

let tom: Person = {
    name: 'Tom'
};

任意属性

有时候我们希望一个接口允许有任意的属性,可以使用如下方式:

interface Person {
    name: string;
    age?: number;
    [propName: string]: any;
}

let tom: Person = {
    name: 'Tom',
    gender: 'male'
};

使用 [propName: string] 定义了任意属性取 string 类型的值。需要注意的是,一旦定义了任意属性,那么确定属性和可选属性的类型都必须是它的类型的子集

只读属性

有时候我们希望对象中的一些字段只能在创建的时候被赋值,那么可以用 readonly 定义只读属性:

interface Person {
    readonly id: number;
    name: string;
    age?: number;
    [propName: string]: any;
}

let tom: Person = {
    id: 89757,
    name: 'Tom',
    gender: 'male'
};

tom.id = 9527;  //报错

注意,只读的约束存在于第一次给对象赋值的时候,而不是第一次给只读属性赋值的时候

联合类型

联合类型(Union Types)表示取值可以为多种类型中的一种。联合类型使用 | 分隔每个类型。

let myFavoriteNumber: string | number;
myFavoriteNumber = 'seven';
myFavoriteNumber = 7;

标签:string,数据类型,number,let,tom,类型,name
From: https://www.cnblogs.com/ewar-k/p/17875764.html

相关文章

  • 可变与不可变数据类型
    可变与不可变数据类型1.可变类型对于可变类型(如列表、字典等),在函数中修改参数会影响原始对象。1.1字典dic={'name':'serein','sex':'male','age':18}print(id(dic))#1499123688064#修改字典中的值dic['age']=19print(dic)#{'n......
  • 【python基础之可变和不可变数据类型】---python之栈的介绍
    【二】栈【0】引入https://www.hello-algo.com/chapter_stack_and_queue/栈如同叠猫猫,而队列就像猫猫排队。两者分别代表着先入后出和先入先出的逻辑关系。【1】栈的介绍「栈stack」是一种遵循先入后出的逻辑的线性数据结构。我们可以将栈类比为桌面上的一摞盘......
  • 【python基础之可变和不可变数据类型】--- python之堆的介绍
    【一】堆堆--简介:一种基于树的数据结构堆是满足堆特性的完全二叉树,即树中每个节点的值大于或等于其子节点的值。有两种类型的堆:1.最大堆:在最大堆中,每个节点的值都大于或等于其子节点的值,并且根节点在树中具有最大值。2.最小堆:在最小堆中,每个节点的值都小于或等于其子......
  • 【python基础之可变和不可变数据类型】--- python堆栈的相关应用
    【一】用代码实现堆和栈【1】堆#堆的操作是先进先出(FIFO)list_queue=[]foriinrange(0,5):print(f'{i}已入堆(队列)')list_queue.append(i)print('------入堆完毕--------')whilelist_queue:print(f'{list_queue.pop(0)}已出堆(队列)')print('-......
  • Java基本数据类型、包装类及拆装箱详解
    Java的基本数据类型和对应的包装类是Java语言中处理数据的两个关键概念。基本数据类型提供了简单而高效的方式来存储数据,而包装类使得基本数据类型具有对象的特性。本文将深入探讨基本数据类型与包装类的应用场景及详细描述,并对自动拆箱和装箱的源码实现进行分析。基本数据类型与......
  • Python中级-01-数据类型的内置方法
    本篇内容来源于:【1.0】Python中级之数据类型的内置方法-Chimengmeng-博客园(cnblogs.com)写的verygood,非常详细【一】数字类型【1】整数类型(int)(1)基本运算实现整数的加法运算。#int.__add__(other)num1=5num2=2result=num1.__add__(num2)print(......
  • 软件测试/人工智能|Python 数据类型解析:探索编程世界的多样性
    数据类型是编程中不可或缺的基本概念。在Python中,有多种数据类型,每种都有其独特的特点和用途。本文将带你深入了解常见的Python数据类型及其实际应用。引言在编程中,数据类型是对数据进行分类和组织的方式。Python中有多种数据类型,每种类型都有其自身的特性和功能。了解这......
  • 软件测试/人工智能|Python 数据类型转换解析:理解数据之间的灵活转换
    引言数据类型转换是指将一种数据类型的值转换为另一种数据类型的过程。在编程中,我们经常需要处理不同类型的数据,正确地进行类型转换是编写健壮程序的关键。常见的数据类型转换整数和浮点数转换为字符串#示例代码num_int=10num_float=3.14str_int=str(num_int)str......
  • 字符编码发展史_编码/解码_可变/不可变数据类型
    【一】什么是字符编码字符编码是一种将字符映射到数字编码的方法。由于计算机内部实际处理的是二进制数据,而字符是人类可读的符号,所以需要一种方式来表示和存储字符。字符编码就是将字符映射为对应的数字编码,以便计算机能够识别和处理字符。【二】字符编码的发展史字符编码的发......
  • 数据类型内置方法
    数据类型内置方法介绍八大基本数据类型数字类型整形(int)浮点型(float)字符串(str)列表(list)元组(tuple)布尔(bool)字典(dict)集合(set)【一】整型(int)(1)类型强转可以将由纯整数构成的字符串直接转换成整型符合int类型格式的字符串可以强转成整数类型num='123'print......