Typescript basic

Sike發表於2019-02-16

TypeScript-Basic

typescript之旅

1.TypeScript-Basic
2.TypeScript interface
3.Typescript-module(1)
4.TypeScript Modules(2)
5.Typescript tsconfig
6.TypeScript Functions
7.Typescript Class

基礎

  • 今天講的很簡單,是一些很基礎的東西,但它們會讓你對typescript眼前一亮

型別

  • boolean

  • number

  • string

  • array

  • tuple+聯合型別(額,這個很難懂,後面有解釋)

  • enum

  • any

  • void

OK,如何宣告一個變數的型別呢 ?
屁股後面加:

  • let isDone:boolean = false;

  • let decLiteral: number = 6;

  • let name: string = "bob";

  • let list: number[] = [1, 2, 3];

  • let x: [string, number];

  • enum Color {Red, Green, Blue};let c: Color = Color.Green;

  • let notSure: any = 4;

問題

  • 關於強制型別轉換的問題
    如果你使用過c語言,那你一定知道,兩個相容型別的轉換需要使用

char* a = (char*)10000;,那typescript中any相容所有型別,所以:

let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;

記住:()是c語言,<>是typescript

還有一種寫法:

let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;

關於tuple+聯合型別

需求:表示一個只有兩個元素,且一個字串一個數字的陣列(特定元素數量和型別)

let x: [string, number];

我們也叫他tuple,其實它叫什麼無所謂,重要的是:

  • 元素數量固定

  • 元素型別確定

// Declare a tuple type
let x: [string, number];
// Initialize it
x = [`hello`, 10]; // OK
// Initialize it incorrectly
x = [10, `hello`]; // Error

你說是數量固定的,我非要越界呢?

不得不說,很無語的設計,越界之後就是聯合型別

x[3] = `world`; // OK, 字串可以賦值給(string | number)型別

越界了,但是沒報錯。其實只要你後面只放string和number型別都沒錯,因為越界之後變型別。變成聯合型別嘍!

相關文章