Typescript: 类型

在本文中,我们将学习如何使用 typescript 来确保变量类型是安全的,并且不通类型的值无法错误的赋值。 例如:字符串值不能赋值给数值变量。

这将是一个完整的typescript系列教程,您将从字符串、布尔值等基本主题到类型别名、枚举、接口、泛型等更复杂的主题学习。
typescript中的类型
number
string
boolean
null
undefined
void
object
array
tuples
unknown
never
any (不常用)
以及其他

使用 Typescript 的情况
例如,有一个函数 increaseScore,它接受 currentScore 并将分数增加 increaseBy number 并返回更新后的分数。

function increaseScore(currentScore, increaseBy){
    return currentScore + increaseBy;
}

increaseScore(10, 2) // output : 12
increaseScore(10, "2") // output : 102

如果有人传递字符串或其他东西,那么它将在生产或运行时抛出错误。 例如在分数变为 102 的第二个示例中,它是一个错误,如图所示。

现在,我们如何使用打字稿来防止这种情况发生? 我们将在后面深入探讨。 您可以像这样定义变量的类型

let variableName: type = value;

原始类型
JavaScript 中的原始类型是

string
boolean
number
string
字符串值用单引号或双引号括起来。 它们用于存储文本数据。

let player: string = "John";

// ✅ CORRECT
player = "anny";

// ❌ ERROR: Type 'number' is not assignable to type 'string
player = 4;

如您所见,我们在第 3 行分配了姓名 (Anny),在第 4 行分配了号码,它立即抛出错误。 这就是typescript。 您不需要像 JS 那样运行 TS 来获取错误。

布尔值
在布尔值中,它可以是 true 或 false 否则,它会抛出一个错误,如以下代码所示

let isLoggedIn: boolean = false;

// ✅ CORRECT
isLoggedIn = true;

// ❌ ERROR: Type 'number' is not assignable to type 'boolean'
isLoggedIn = 5;

// ❌ ERROR: Type 'string' is not assignable to type 'boolean'.
isLoggedIn = "hello";

number
JavaScript 没有针对整数的特殊运行时值,因此没有等价于 int 或 float 的东西——一切都是简单的数字,这就是为什么在第 5 行中,当我们将价格分配给 500.53 时,它不会给你一个错误,因为它是一个数字。

let price: number = 200;

// ✅ CORRECT
price = 300;
price = 500.53;

// ❌ Error
price = false;
price = "3000";

不要使用any
所以问题出现了,为什么我们不应该使用任何? 答案很简单,因为当你使用 any 时,你禁用了对该变量的所有类型检查,任何人都可以为该变量分配任何类型的值。 例如:

//  Wrong Practice (by default 'any')
let hello;

//  'hello' can take any type of value
hello =  2;
hello =  "world";
hello =  true;

在第一行我们没有定义变量 hello 的类型,所以它的默认值是 any ,你可以像上面的例子一样分配你想要的任何东西。

现在想象这样一种情况,您正在调用 API 并获取字符串格式的数据,但有人将其更改为布尔值或数字,然后您的整个应用程序功能将因该错误而崩溃。 而 Typescript 会阻止你这样做。 例如:

let data; // 默认类型是any

function getData(){
    //.........API Call
    return  "Message";
}

data = getData();       // 没问题,因为预期的字符串

另外一个例子:

let data;

function getData(){
    //.........API Call
    return 823;
}

data = getData();       // 问题:预期的字符串但返回数字(不会抛出错误,因为类型是“any”)

解决方案:

let data: string;

function getData(){
    //.........API Call
    return  "Message";
}

data = getData();

现在,如果你传递的不是字符串,那么它会抛出一个错误,如下所示:

let data: string;

function getData(){
  //........API Call
  return true;
}

// ❌ 错误:类型“boolean”不可分配给类型“string”
data = getData();

只要您不希望特定值导致类型检查错误,就可以使用 any。

我将在本系列的后面介绍 void、never 和其他内容。

在本文中,我解释了如何使用 typescript 来确保变量类型是安全的,并且没有其他值可以操纵该变量。

这是一系列 Typescript教程,可帮助您从头开始学习 Typescript。 如果您喜欢这篇文章,请不要忘记给❤️和书签️供以后使用,如果您有任何问题或反馈,请不要犹豫,将它们放在下面的评论中。 我会在下一篇中看到。

你可能感兴趣的:(Typescript: 类型)