初始TyperScript(一) | 青训营笔记

57 阅读3分钟

这是我参与「第四届青训营」笔记创作活动的的第2天

前言: 作为一个前端开发选手,对typescript已经耳熟能详,但是这么久以来一直没有尝试过使用typescript。如今,不管是react还是vue3都已经对typescript有着比较好的支持。这次趁着青训营的机会也开始学习这门语言,希望能够提升自己的水平

1.为什么选择typescript?

首先typescript是JavaScript的超级,最终typescript都需要编译成JavaScript才能运行

image.png 从技术上讲TypeScript就是具有静态类型的 JavaScript  那么,向JavaScript添加静态类型的原因是什么?

  • 您可以避免经典的错误 'undefined' is not a function.
  • 在不严重破坏代码的情况下,重构代码更容易。
  • 使大型、复杂的应用程序源码更易阅读。

typescript是一种强类型语言这也让一些后端开发选手使用起来更加的熟悉。

2.基础语法

基本数据类型

/*javascript*/
const name = "Runoob";
const num = 1
const e = true
const r = null
const t = undefined
/*typescript*/
const name: string = "Runoob";
const num: number = 1
const e: boolean = true
const r: null = null
const t: undefined = undefined

可以很直接的看的,typescript的基本数据类型就是比JavaScript多了一个类型声明 typescript还有一些特殊的类型

/*元组类型用来表示已知元素数量和类型的数组,各元素的类型不必相同,对应位置的类型需要相同*/
let x: [string, number];
x = ['Runoob', 1];    // 运行正常
x = [1, 'Runoob'];    // 报错
console.log(x[0]);    // 输出 Runoob
/*枚举类型用于定义数值集合*/
enum Color {Red, Green, Blue};
let c: Color = Color.Blue;
console.log(c);    // 输出 2
/*void用于标识方法返回值的类型,表示该方法没有返回值*/
function hello(): void {
    alert("Hello Runoob");
}
/*never 是其它类型(包括 null 和 undefined)的子类型,代表从不会出现的值*/

Any类型

any类型是 TypeScript 针对编程时类型不明确的变量使用的一种数据类型,它常用于以下三种情况 1、变量的值会动态改变时,比如来自用户的输入,任意值类型可以让这些变量跳过编译阶段的类型检查,示例代码如下:

let x: any = 1;    // 数字类型
x = 'I am who I am';    // 字符串类型
x = false;    // 布尔类型

改写现有代码时,任意值允许在编译时可选择地包含或移除类型检查,示例代码如下:

let x: any = 4;
x.ifItExists();    // 正确,ifItExists方法在运行时可能存在,但这里并不会检查
x.toFixed();    // 正确

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

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

类型断言

类型断言可以用来手动指定一个值的类型,即允许变量从一种类型更改为另一种类型。

语法格式:

<类型>

或:

as 类型

实例

var str = '1' var str2:number = <number> <any> str //str、str2 是 string 类型 console.log(str2)

类型推断

当类型没有给出时,TypeScript 编译器利用类型推断来推断类型。 如果由于缺乏声明而不能推断出类型,那么它的类型被视作默认的动态 any 类型。

var num = 2; // 类型推断为 number 
console.log("num 变量的值为 "+num); 
num = "12"; // 编译错误 console.log(num);
  • 第一行代码声明了变量 num 并=设置初始值为 2。 注意变量声明没有指定类型。因此,程序使用类型推断来确定变量的数据类型,第一次赋值为 2,num 设置为 number 类型。

  • 第三行代码,当我们再次为变量设置字符串类型的值时,这时编译会错误。因为变量已经设置为了 number 类型。

    error TS2322: Type '"12"' is not assignable to type 'number'.
    

这次的学习就暂时告一段落,这一次学习了一些typescript的一些数据类型和特性,以后会继续学习更加深入的内容。