TypeScript 是 JavaScript 的超集,它引入了静态类型系统,使代码更加健壮和易于维护。以下是 TypeScript 中关于类型(Type)的详解:
boolean
)let isDone: boolean = true;
number
)let decimal: number = 6; let hex: number = 0xf00d; let binary: number = 0b1010; let octal: number = 0o744;
string
)let color: string = "blue"; color = 'red';
Array
)let list: number[] = [1, 2, 3]; let listGeneric: Array<number> = [1, 2, 3];
Tuple
)元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。
let x: [string, number]; x = ["hello", 10]; // OK
enum
)枚举类型是对 JavaScript 标准数据类型的一个补充。
enum Color {Red, Green, Blue} let c: Color = Color.Green;
any
)当你不确定某个值的数据类型时可以使用 any
。
let notSure: any = 4; notSure = "maybe a string instead"; notSure = false; // OK
void
)常用于表示某个函数没有返回值。
function warnUser(): void { console.log("This is my warning message"); } let unusable: void = undefined;
null
) 和 未定义 (undefined
)默认情况下,null
和 undefined
是所有类型的子类型。
let u: undefined = undefined; let n: null = null;
never
)never
类型表示的是那些永不存在的值的类型。
function error(message: string): never { throw new Error(message); }
object
)表示非原始类型。
declare function create(o: object | null): void; create({ prop: 0 }); // OK create(null); // OK
Union Types
)表示一个值可以是几种类型之一。
let value: string | number; value = "Hello"; value = 123;
Type Aliases
)你可以使用 type
关键字为一个类型定义一个新名字。
type Name = string; type NameResolver = () => string; type NameOrResolver = Name | NameResolver; function getName(n: NameOrResolver): Name { if (typeof n === 'string') { return n; } else { return n(); } }
Interface
)接口可以用来描述对象的形状。
interface LabeledValue { label: string; } function printLabel(labeledObj: LabeledValue) { console.log(labeledObj.label); } let myObj = {size: 10, label: "Size 10 Object"}; printLabel(myObj);
Function Types
)为函数定义类型。
interface SearchFunc { (source: string, subString: string): boolean; } let mySearch: SearchFunc; mySearch = function(source: string, subString: string) { return source.search(subString) !== -1; }
Class
)TypeScript 支持 ES6 的类。
class Animal { private name: string; constructor(name: string) { this.name = name; } public move(distanceInMeters: number = 0) { console.log(`${this.name} moved ${distanceInMeters}m.`); } } let dog = new Animal("Dog"); dog.move(10);
Generics
)你可以创建支持多种数据类型的组件。
function identity<T>(arg: T): T { return arg; } let output = identity<string>("myString");
Type Inference
)TypeScript 可以根据一些简单的规则来推断出变量的类型。
let x = 3; // x 被推断为 number 类型
TypeScript 提供了丰富的类型系统,使得 JavaScript 的开发更加稳健和高效。通过使用类型,你可以更早地发现代码中的错误,并使得代码更加易于理解和维护。
标签: 来源:
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。