typescript数据类型与js有哪些不同?

Posted 学哥来了

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了typescript数据类型与js有哪些不同?相关的知识,希望对你有一定的参考价值。

类型 TS VS. JS

javascript数据类型

  • boolean

  • number

  • string

  • null

  • undefined

  • object

  • array

  • symbol(es6)

下面为typescript增加的数据类型

  • tuple(元组)

// 已知元素数量和类型的数组
// Declare a tuple type
let x: [string, number];
// Initialize it
x = ['hello', 10]; // OK
// Initialize it incorrectly
x = [10, 'hello']; // Error
  • enum(枚举)

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

// 为了能够更好的了解枚举,我们将它转化为js代码

var Color;
(function (Color) {
   Color[Color["Red"] = 0] = "Red";
   Color[Color["Green"] = 1] = "Green";
   Color[Color["Blue"] = 2] = "Blue";
})(Color || (Color = {}));
var c = Color.Green;

// console.log(Color) =>
// {
//     0: "Red",
//     1: "Green",
//     2: "Blue",
//     Blue: 2,
//     Green: 1,
//     Red: 0,
// }

// console.log(Color.Green,Color[1]) => 1 'Green'

// 枚举类型提供的一个便利是你可以由枚举的值得到它的名字。也可以由他的名字来得到它的值
  • any

有时候,我们会想要为那些在编程阶段还不清楚类型的变量指定一个类型。 这些值可能来自于动态的内容,比如来自用户输入或第三方代码库。 这种情况下,我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。 那么我们可以使用 any类型来标记这些变量:

let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // okay, definitely a boolean
  • void

某种程度上来说,void类型像是与any类型相反,它表示没有任何类型。 当一个函数没有返回值时,你通常会见到其返回值类型是 void:

function warnUser(): void {
   alert("This is my warning message");
}
  • never

never类型表示的是那些永不存在的值的类型。 例如, 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) {
   }
}

let vs. const

使用最小特权原则,所有变量除了你计划去修改的都应该使用const。 基本原则就是如果一个变量不需要对它写入,那么其它使用这些代码的人也不能够写入它们,并且要思考为什么会需要对这些变量重新赋值。 使用 const也可以让我们更容易的推测数据的流动。


以上是关于typescript数据类型与js有哪些不同?的主要内容,如果未能解决你的问题,请参考以下文章

Python基本内置数据类型都有哪些

React.js 和 Typescript 返回获取 API 响应的类型?

TypeScripts前端基础篇---ts基本数据类型

TypeScripts前端基础篇---ts基本数据类型

2 分钟知晓 typeScript 所有数据类型

js数据类型BigInt