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。 如果您喜欢这篇文章,请不要忘记给❤️和书签🏷️供以后使用,如果您有任何问题或反馈,请不要犹豫,将它们放在下面的评论中。 我会在下一篇中看到。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,233评论 6 495
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,357评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,831评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,313评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,417评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,470评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,482评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,265评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,708评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,997评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,176评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,503评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,150评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,391评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,034评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,063评论 2 352

推荐阅读更多精彩内容