TypeScript类型

TypeScript支持对基本类型(原始类型和对象类型)进行类型检查。它还支持泛型,装饰器和ES6模块类型。重要的是要知道打字稿中的字体系统是可选的。因此,所有javascript程序也都是打字稿程序。

目录

静态类型 
	- 基本类型 
	- 对象类型
泛型
装饰

1)静态类型

在语言语义和类型系统的上下文中,静态类型通常表示“在编译时”或“不运行程序”,而动态表示“在运行时”。在静态类型语言中,变量,参数和对象成员具有编译器在编译时就知道的类型。编译器可以使用该信息执行类型检查并优化编译的代码。

TypeScript中的静态类型可以分为两个子类别:

1.1)基本类型

打字稿有5种主要的原语类型,即numberstringbooleanvoidany

原始类型 描述
number 用于定义类型的变量number

				let num: number = 123;
				num = 123.456;
				num = '123'; 	// Error
string 用于定义类型的变量string

				let str: string = 'hello';
				str = 'world';
				str = 123; 	// Error
boolean 用于定义类型的变量boolean

				let bool: boolean = false;
				bool = true;
				bool = 123; 	// Error
void
  1. 在函数返回类型上使用以表示非返回函数。
    			function warnUser(): void {
    			    alert("This is my warning message");
    			}
    
  2. 声明类型的变量void没有用,因为只能分配undefined或分配null它们。
    			let tempVar: void = undefined;
    			tempVar = null;		
    
    			tempVar = 123;		//Error
    
any 使用any时要选择退出的类型检查,并让值通过编译时检查。

				let val: any = 'hello';
				
				val = 123; 		// OK

				val = true; 	// OK

1.2)对象类型

TypeScript支持以下对象类型。

对象类型 描述
数组 数组是相同数据类型的值的集合。

			var names:string[];	//declaration 

			names = ["how","to","do","in","java"];	//initialization
up 偶像数组一样;但是存储不同数据类型的值。就像数组一样,它也是基于索引的数据结构。

			var items;	//declaration 

			items = ["how", 2, "do", 1 , true];	//initialization
接口 接口定义派生成员类必须实现的属性,方法和事件。

			interface ICalc { 
				add (first: number, second: number): any;
			} 

			let Calculator: ICalc = {
				add(first: number, second: number) {
					return first + second;
				}
			}
类是用于创建对象的模板。Typescript从ES6获得对类的支持。

			class Person { 

			   //field 
			   name:string; 
			 
			   //constructor 
			   constructor(name:string) { 
			      this.name = name; 
			   }  

			   //function 
			   speakName():void { 
			      console.log("Name is  :   "+this.name) 
			   } 
			}
枚举 与其他编程语言一样,Enum是由一组命名值组成的数据类型。名称通常是充当常量的标识符。ES6中引入了枚举。

			enum Direction {
			    Up,
			    Down,
			    Left,
			    Right
			}

			let go: Direction;
			go = Direction.Up;
功能 在TypeScript中,我们可以声明仅在函数生命期内指向函数的变量。

				let fun: Function = () => console.log("Hello");

				fun = 123; //Error

2)泛型

泛型允许创建一个可以在多种类型而不是单个类型上工作的组件。例如

function throwBack<T>(arg: T): T {	//Function return the parameter as it is
    return arg;
}

let outputStr = identity<string>("myString"); 	//OK

let outputNum = identity<number>( 100 ); 		//OK

3)装饰器

一般而言,装饰器是注解。它们与'@'符号一起使用。它允许我们修饰类和函数,类似于java中的注解和python中的装饰器。

装饰器是一项新功能,很可能会纳入JavaScript的ES7版本。但是该功能在TypeScript(实验性)中可用,因此我们已经可以使用它了。

如何使用装饰器

了解每个装饰器都是javascript函数是很重要的。要创建装饰器,请创建如下函数:

function printable ( target ) {
	Object.defineProperty(target.prototype, 'print', {value: () => "Saigon"});
}

@printable
class Person {
    
}

let admin = new Person();
console.log(admin.print()); // Saigon

这就是typescript中的类型系统。如果您有任何疑问,请在评论区留言,我会一一解答。

saigon has written 1445 articles

Leave a Reply