初学TypeScript系列(二)

71 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第6天,点击查看活动详情

TypeScript 基础知识

a. 基本数据类型

  • 布尔值 boolean

    使用 boolean 定义布尔值类型

    let isDone: boolean = false;
    
  • 数值 number

    使用 number 定义数值类型

    let decLiteral: number = 6;
    // ES6 中的二进制表示法
    let binaryLiteral: number = 0b1010;
    // ES6 中的八进制表示法
    let octalLiteral: number = 0o744;
    

    二进制和八进制会被编译为十进制数字

  • 字符串 string

    使用 string 定义字符串类型

    let myName: string = 'Tom';
    let myAge: number = 25;
    
    // 模板字符串
    let sentence: string = `Hello, my name is ${myName}. I'll be ${myAge + 1} years old this month.`;
    

    注:` ` 用来定义模板字符串,${expr} 用来在模板字符串中嵌入表达式。

  • undefined 和 null

    let u: undefined = undefined;
    let n: null = null;
    
  • 空值(Void)

    在 TypeScript 中, 表示没有任何类型, 可以用 void 表示没有任何返回值的函数

    /* 空值一般用来说明函数的返回值不能是undefined和null之外的值(相当于没有任何返回值) */
    function fn(): void {
      console.log('fn()')
      // return undefined
      // return null
      // return 1 // error
    }
    

小结:

  1. 先声明变量,后赋值

    let unitnumber; 
    unit = 5;
    
  2. 变量有默认值的话,一般不需要显式声明类型,TypeScript 会自动推断变量的类型(类型推论)

    let id = 7// number 类型
    let name = 'typescript'// string 类型
    
  3. 可以将变量设置为联合类型(联合类型是可以分配多个类型的变量)

    let agestring | number;
    age = 7;
    age = '7';
    

b. 类型推论(Type Inference)

TypeScript会在没有明确指定类型的地方,提供一个类型

// 1. 定义变量时赋值,推断为对应的类型
// 变量age的类型被推断为数字
let age = 7;

// 2. 定义变量时没有赋值, 推断为任意值类型 
let a;  // any类型
a = 123;
a = 'abc';

c. 联合类型(Union Types)

表示取值可以为多种类型中的一种,使用 | 分隔每个类型

当 TypeScript 不确定一个联合类型的变量到底是哪个类型的时候,只能访问此联合类型的所有类型里共有的属性或方法

//  toString()方法是 string 和 number 的共有属性
function getString(something: string | number): string {
    return something.toString();
}

d. 数组

定义数组的两种方式:

  1. 类型 + [ ] 表示由此类型元素组成的一个数组

  2. 数组泛型( Array<元素类型>

let list1: number[] = [1, 2, 3]
let list2: Array<number> = [1, 2, 3]
//联合类型来定义包含多种类型的数组    
let person: (string | number | boolean)[] = ['ConardLi'1true];    

e. 函数

TypeScript 中可以定义函数参数和返回值的类型

// 定义一个名为 reduce 的函数,它接受类型为 number 的数字,并返回一个数字
function reduce(a: number, b: number): number {
  return a - b;
}

console.log(reduce(10, 3)); // 7

//ES6 箭头函数的写法:
 const reduce = (anumber, b:number): number => {
     return a - b;
 };

可选参数:用 ? 表示可选的参数

const add = (a: number, b: number, c?: number | string) => {
  console.log(c);
  return a + b;
};

console.log(add(1, 6, '可以是 number或者string')); // 可以是 number或者string  7

f. 任意值(Any)

表示允许赋值为任意类型。通常为编译阶段还不清楚类型的变量指定一个类型

变量如果在声明的时候,未指定其类型,那么它会被识别为任意值类型

let myFavoriteNumber: any = 'seven';
myFavoriteNumber = 7;

let something;
something = 'seven';

注:如果大量使用 anyTypeScript 就失去了意义(其它类型在赋值过程中改变类型是不被允许)