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有哪些不同?的主要内容,如果未能解决你的问题,请参考以下文章