TypeScript小白日记一(基础类型)

版权声明:本文为simorel原创文章,未经simorel允许不得转载。 https://blog.csdn.net/Simoral/article/details/88314703

TypeScript小白日记一(基础类型)



官网教程

布尔类型(Boolean)

let isDone: boolean = false;

数字类型(Number)

let decLiteral: number = 6;

字符类型(String)

let name: string = "Bob";

let sentence: string = `Hello my name is ${ name }`;

let sentence1: string = 'Hello my name is' + name;

数组类型(Array)

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

// 泛型
let list: Array<Number> = [1, 2, 3];

元组(Tuple)

元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。 比如,你可以定义一对值分别为 string和number类型的元组。

// Declare a tuple type
let x: [string, number];

// Initialize it
x = ['hello', 10];  // OK

// Initialize id incorrectly
x = [10, 'hello'];  // Error

// Use
console.log(x[0].substr(1));  // OK
console.log(x[1].substr(1));  // Error, 'number' does not have 'substr'

// 访问越界的元素,会使用联合类型替代
x[3] = 'world';  // OK, 字符串可以赋值给(string | number)类型

console.log(x[5].toString());  // OK, 'string' 和 'number' 都有 toString

x[6] = true;  // Error, 布尔不是(string | number)类型

枚举

// 从0开始
enum Color { Red, Yellow, Blur, Green };
let c: Color = Color.Red;

// 从1开始
enum Color1 { Red = 1, Yellow, Blur, Green };
let c1: Color1 = Color1.Red;

// 指定序号索引,手动赋值
enum Color2 { Red = 1, Yellow = 2, Blur = 4, Green = 8 };
let c2: Color2 = Color2.Red;

// 查找数值对应的名字
enum Color { Red = 1, Yellow, Blur, Green };
let colorName: string = Color[2];
console.log(colorName);  // 显示'Green'因为上面代码里它的值是2

Any(万能类型)

Object类型只允许赋任意值,但是调用的方法有限制。而Any不仅可以赋任意值,也可以调用任意方法。

let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false;  // okay, definitely a boolean

let notSure: any = 4;
notSure.ifItExists();  // ifItExists可能存在在运行时
notSure.toFixed();  // toFixed存在,但是编译器不会检查

let prettySure: Object = 4;
prettySure.toFixed();  // 错误,'toFixed'不存在Object类型

// 任意类型数组
let list: any[] = [1, true, "free"];
list[1] = 100;

Void

function warnUser(): void {
	console.log("This is my warning message");
}

Null 和 Undefined

可以把nullundefined赋值给number类型的变量。
--strictNullChecks标记开启后,nullundefined只能赋值给void和他们各自。

Never

never类型标识是永不存在的值的类型。never可以赋值给任何类型。

// 返回never的函数必须存在无法到达的终点
function error(message: string): never {
	throw new Error(message);
}

// 推断的返回值类型为never
function fail() {
	return error("Something failed");
}

// 返回never的函数必须存在无法达到的重点
function infiniteLoop(): never {
	whild (true) {
	}
}

Object

非原始类型,除number, string, boolean, symbol, null 或 undefined 之外的类型。

declare function create(o: object | null): void;

create({ prop: 0 });  // OK
create(null);  // OK

create(42);  // Error number
create("string");  // Error string
create(false);  // Error boolean
create(undefined);  // Error undefined

类型断言

// ‘尖括号’语法
let someValue: any = "this is a string";

let strLength: number = (<string>someValue).length;

// 'as'语法(JSX中仅此方法可用)
let someValue: any = "this is a string";

let strLength: number = (someValue as string).length;

let

尽可能用let代替var

个人总结

难点

私以为难点在于:元组void/null/undefined/never

猜你喜欢

转载自blog.csdn.net/Simoral/article/details/88314703