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类型都没错,因为越界之后变类型。变成联合类型喽!