chst365's blog chst365's blog
首页
  • Git
  • 网络
  • 操作系统
  • 浏览器
  • webpack
  • JavaScript
  • TypeScript
  • 性能
  • 工程化
  • React
  • 编程题
  • React技术揭秘
  • 算法
  • Node
  • 编码解码
  • NodeJS系列
  • Linux系列
  • JavaScript系列
  • HTTP系列
  • GIT系列
  • ES6系列
  • 设计模式系列
  • CSS系列
  • 小程序系列
  • 数据结构与算法系列
  • React系列
  • Vue3系列
  • Vue系列
  • TypeScript系列
  • Webpack系列
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

chst365

DIV工程师
首页
  • Git
  • 网络
  • 操作系统
  • 浏览器
  • webpack
  • JavaScript
  • TypeScript
  • 性能
  • 工程化
  • React
  • 编程题
  • React技术揭秘
  • 算法
  • Node
  • 编码解码
  • NodeJS系列
  • Linux系列
  • JavaScript系列
  • HTTP系列
  • GIT系列
  • ES6系列
  • 设计模式系列
  • CSS系列
  • 小程序系列
  • 数据结构与算法系列
  • React系列
  • Vue3系列
  • Vue系列
  • TypeScript系列
  • Webpack系列
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • NodeJS系列

  • Linux系列

  • JavaScript系列

  • HTTP系列

  • GIT系列

  • ES6系列

  • 设计模式系列

  • CSS系列

  • 小程序系列

  • 数据结构与算法系列

  • React系列

  • Vue3系列

  • Vue系列

  • TypeScript系列

    • 说说你对 TypeScript 中类的理解?应用场景?
    • 说说你对 TypeScript 中高级类型的理解?有哪些?
    • 说说如何在Vue项目中应用TypeScript?
    • 说说你对 TypeScript 中函数的理解?与 JavaScript 函数的区别?
    • 说说你对 TypeScript 中枚举类型的理解?应用场景?
    • 说说如何在 React 项目中应用 TypeScript?
    • 说说你对 TypeScript 的理解?与 JavaScript 的区别?
    • 说说 typescript 的数据类型有哪些?
      • 一、是什么
      • 二、有哪些
        • boolean
        • number
        • string
        • array
        • tuple
        • enum
        • any
        • null 和 和 undefined
        • void
        • never
        • object
      • 三、总结
      • 参考文献
    • 说说你对 TypeScript 装饰器的理解?应用场景?
    • 说说你对 TypeScript 中接口的理解?应用场景?
    • 说说对 TypeScript 中命名空间与模块的理解?区别?
    • 说说你对 TypeScript 中泛型的理解?应用场景?
  • Webpack系列

  • 面试官
  • TypeScript系列
chst365
2023-06-28
目录

说说 typescript 的数据类型有哪些?

# 面试官:说说 typescript 的数据类型有哪些?

# 一、是什么

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;  //正确
1
2
3

# number

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

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

进制表示:

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

# string

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

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

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

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

# array

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

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

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

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

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

# tuple

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

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

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

# enum

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

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

# any

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

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

let num:any = 123;
num = 'str';
num = true;
1
2
3

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

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

# null 和 和 undefined

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

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

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

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

# void

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

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

# 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);
}
1
2
3
4
5
6
7
8
9
10
11

# object

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

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

# 三、总结

和javascript基本一致,也分成:

  • 基本类型
  • 引用类型

在基础类型上,typescript增添了void、any、emum等原始类型

# 参考文献

  • https://www.tslang.cn/docs/handbook/basic-types.html
#面试官
上次更新: 2025/04/11, 17:57:53
说说你对 TypeScript 的理解?与 JavaScript 的区别?
说说你对 TypeScript 装饰器的理解?应用场景?

← 说说你对 TypeScript 的理解?与 JavaScript 的区别? 说说你对 TypeScript 装饰器的理解?应用场景?→

最近更新
01
面试官
03-27
02
this&指针&作用域&闭包
03-27
03
前端
03-27
更多文章>
Theme by Vdoing | Copyright © 2019-2025 chst365 | 豫ICP备17031889号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式