前端系列二十八:TS常用类型

本文详细介绍了TypeScript中的类型注解、基础类型、数组类型、联合类型、类型别名、函数类型以及对象类型的定义和用法,包括可选参数和可选属性,帮助读者深入理解TS类型系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类型注解:

let age :number = 18
    
    代码中的 : number 就是类型注释。

    作用:
    为变量'添加类型约束',上面代码中,约定变量age的类型为number ( 数值类型 )
    
    解释:
        约定了什么类型,就只能给变量赋值该类型的值,否则,就会报错
 

常用基础类型概述:

JS已有类型:

原始类型:number/string/boolean/null/undefined/symbol

对象类型: object ( 包括,数组、对象、函数等对象 )

TS新增类型:

联合类型、自定义类型(类型别名)、接口、元组、字面量类型、枚举、void、any等。

数组类型:

对象类型:object ( 包括, 数组、对象、函数等对象 )

特点:
        对象类型,在TS中更加细化,每个具体的对象都有自己的类型语法

数组类型的两种写法: ( 推荐使用 number[ ] 写法 )

let numbers: number[ ] = [1,3,5 ]

let string: Array<string> = [ 'a', 'b', 'c ' ]

联合类型:

需求:  数组中既有 number类型,又有string类型,就可以使用联合类型

    写法:
        let arr : ( number | string )[ ] = [1, 'a' ,3, 'b']

    | (竖线) 在TS中叫做 '联合类型' (由两个或多个其他类型组成的类型,表示可以是这些类型中
的任意一种)

    注意:联合类型只有一根竖线, 不要与JS中的 或( || ) 混淆了

类型别名:

类型别名( 自定义类型 ) : 为任意类型起别名

    使用场景:当同一类型 (复杂)被多次使用时, 可以通过类型别名 , ‘简化改类型的使用’

    type CustomArray = ( number | string )[ ]
    let arr1: CustomArray = [ 1, 'a' ,3, 'b' ]

    解释:
    1.使用 'type' 关键字来创建类型别名
    2.类型别名 ( 比如, 此处的CustomArray ), 可以是任意合法的变量名称
    3.创建类型别名后, 直接 '使用该类型别名作为变量的类型注释'即可

函数类型:

函数类型实际指的是: '函数参数'和'函数返回值'的类型

函数指定类型的两种方式:

1.单独指定参数,返回值的类型

    写法:
        function add (num1:number, num2:number): number {
            return num1 + num2
        }
        
        const add = (num1:number, num2:number): number => {
              return num1+num2
        }

2.同时指定参数,返回值的类型
    
    写法:
        意思:就是在前面的时候就声明好了参数类型跟返回值类型后面就直接写箭头函数
        const add: ( num1:number, num2: number ) => number = ( num1,num2 ) =>{
            return num1 + num2
        }

    当使用函数作为表达式时,可以通过类似箭头函数形式的语法来为函数添加类型

如果函数没有返回值,那么函数返回值类型为:void

写法:
         function  greet(name: string): void {
        console.log('hello',name)
        }

函数可选参数:

写法:    

    function mySlice( start?: number, end?: number ): void {
    console.log('起始索引: ', start, '结束索引:', end)
    }

    可选参数: 在可传可不传的参数名称后面添加? (问号)
    注意: '可选参数只能出现在参数列表的最后'    ,也就是说可选参数后面不能再出现必选参数

对象类型:

TS中'对象的类型'就是在'描述对象的结构' ( 有什么类型的属性和方法 )

    对象类型的写法:

    let person: { name:string; age: number; sayHi( ): void } = {
    name:'jack',
    age:19,
    sayHi( ) { } 
    }    

    解释:
    直接使用{ } 来描述对象结构,属性采用'属性名:类型'的形式;方法采用'方法名( ): 返回值类型 '的
形式。
    如果方法有参数,就在方法名后面的小括号中指定参数类型 ( 比如: greet( name:string ):void )
    在一行代码中指定对象的多个属性类型时,使用 ;(分号)来分隔
    如果一行代码只指定一个属性类型( 通过换行来分隔多个属性类型 ),可以去掉;(分号)

对象可选属性:

比如我们在使用axios({...})时,如果发送GET请求, method 属性就可以省略

    写法:
    function  myaxios( config: { url: string; method?: string } ) {
    console.log(config)
    } 
    '可选属性'的语法与函数可选参数的语法一致,都使用 ? (问号) 来表示

<think>好的,用户想了解TypeScript中的数据类型完整列表。首先,我需要回顾之前提供的引用内容,确保覆盖所有提到的类型。引用1到5中提到了基本类型如Undefined、Number、string、Boolean、enum、any、void、Array、Tuple、Null,还有高级类型如Never、symbol、对象、函数、类型断言、泛型、交叉类型、联合类型。 用户要求完整列表,所以需要分清楚基本数据类型和高级类型。基本类型可能包括布尔值、数字、字符串、数组、元组、枚举、any、void、null、undefined。高级类型部分可能有Never、symbol、对象类型、函数类型类型断言、泛型、交叉类型、联合类型等。还要注意引用4提到的数组的不同声明方式,比如number[]和Array<number>,以及元组的例子。另外,引用5提到了类型转换函数,但用户现在只需要数据类型,这部分可能不需要展开。 需要确认是否有遗漏的类型,比如bigint,可能在某些版本中新增。此外,可能需要提到字面量类型,比如字符串字面量或数字字面量类型,但不确定是否在引用中有提到。根据引用3,TypeScript有静态类型系统,所以可能包括用户自定义的类型,如接口和类,但用户可能只需要内置的数据类型。 需要组织回答结构,先列出基本类型,再高级类型,每种类型给出简短说明和示例。注意格式要求:行内数学表达式用$...$,独立公式用$$...$$,但这里可能不涉及数学公式,主要代码示例用代码块。引用中的示例代码需要正确使用TypeScript语法,比如let str: string = "str";等。 最后,生成相关问题,比如类型声明的语法、类型推断、类型转换、高级类型应用等。确保引用标注正确,如引用1到5中的相关信息。 检查是否有错误,比如是否漏掉symbol类型,引用2中提到了symbol作为高级类型。还要注意null和undefined是否属于基本类型,引用1和4都有提到。void和never的区别也需要说明清楚。元组和数组的区别,any和unknown的不同。确保所有类型都被涵盖,并且分类正确。</think>TypeScript 数据类型完整列表分为基础类型和高级类型两大类别,以下是详细说明: --- ### 一、基础数据类型 1. **布尔类型(boolean)** 表示逻辑值 `true` 或 `false`: ```typescript let isDone: boolean = false; ``` 2. **数值类型(number)** 支持整数、浮点数、二进制、八进制等: ```typescript let decimal: number = 6; let hex: number = 0xf00d; // 十六进制 ``` 3. **字符串类型(string)** 使用单引号、双引号或模板字符串: ```typescript let name: string = "TypeScript"; let greeting: string = `Hello, ${name}`; ``` 4. **数组类型(array)** 两种定义方式:元素类型后加 `[]` 或泛型语法: ```typescript let list1: number[] = [1, 2, 3]; let list2: Array<number> = [1, 2, 3]; ``` 5. **元组类型(tuple)** 固定长度和类型的数组,需严格匹配位置: ```typescript let tuple: [string, number] = ["Alice", 30]; ``` 6. **枚举类型(enum)** 定义命名常量集合,支持数字或字符串枚举: ```typescript enum Color { Red = 1, Green = 2, Blue = 4 } let c: Color = Color.Green; ``` 7. **任意类型(any)** 关闭类型检查,允许动态类型操作: ```typescript let notSure: any = "unknown"; notSure = 42; // 合法 ``` 8. **空类型(void)** 表示无返回值,常用于函数声明: ```typescript function warn(): void { console.log("Warning"); } ``` 9. **Null 和 Undefined** 默认是所有类型的子类型,但开启 `strictNullChecks` 后需显式处理: ```typescript let u: undefined = undefined; let n: null = null; ``` 10. **Never 类型** 表示永不返回的函数(如抛出异常或死循环): ```typescript function error(message: string): never { throw new Error(message); } ``` --- ### 二、高级类型 1. **联合类型(Union Types)** 允许变量为多种类型之一: ```typescript let value: string | number = "hello"; ``` 2. **交叉类型(Intersection Types)** 合并多个类型为一个复合类型: ```typescript interface A { a: number } interface B { b: string } type C = A & B; // { a: number; b: string } ``` 3. **类型别名(Type Aliases)** 自定义类型名称,增强可读性: ```typescript type Point = { x: number; y: number }; ``` 4. **字面量类型(Literal Types)** 限定变量为特定值: ```typescript let direction: "left" | "right" = "left"; ``` 5. **Symbol 类型** 表示唯一标识符: ```typescript const sym = Symbol("key"); ``` 6. **BigInt 类型** 表示大整数(ES2020+): ```typescript let bigNumber: bigint = 9007199254740991n; ``` 7. **Unknown 类型** 类似 `any` 但更安全,需显式类型检查后才能操作: ```typescript let userInput: unknown; if (typeof userInput === "string") { console.log(userInput.toUpperCase()); } ``` --- ### 三、其他重要特性 - **类型断言(Type Assertion)** 手动指定变量类型: ```typescript let str: any = "this is a string"; let strLength: number = (str as string).length; ``` - **泛型(Generics)** 创建可复用的类型或函数: ```typescript function identity<T>(arg: T): T { return arg; } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值