(一)类型的支持
TypeScript可以支持静态类型定义,而JavaScript不支持
类型:类型是在我们运行程序之前通过在代码中描述我们计划如何使用数据来区分正确程序的方法。它们可以从简单的类型(如数字和字符串) 到为我们的问题域完美建模的复杂结构
编程语言分为两类:
1、静态类型:
在使用静态类型的语言中,变量的类型在编译时必须是已知的。如果我们声明一个变量,编译器应该知道(或可推断) 该变量是数字、字符串或布尔值。
2、动态类型
在动态类型的语言中,只有在运行程序时才知道变量的类型。
(二)TypeScript有哪些类型
1、联合类型:
表示可以采用多个基本类型其中之一
我们用竖线( | )分隔每个类型,所以number | string | boolean表示一个值可以是number,string,或 boolean
2、泛型:
定义一个类型变量<T>,返回类型本身(传入的是什么类型,返回什么类型)
(用any会丢失信息)
(三)TypeScript的优势
1、TypeScript更可靠
与JavaScript相比,TypeScript代码更可靠、更容易重构。这使开发人员可以更轻松地避免错误并进行重写。
类型的定义和编译器的引入,可使你避免掉代码中的大多数愚蠢错误。
2、TypeScript更清晰
显式类型使我们代码可读性更高,所以我们的注意力将会更集中在我们的系统究竟是如何构建的,以及系统的不同部分如何相互作用。在大型系统中,能够在记住上下文的同时抽象出系统的其余部分是很重要的。类型的定义使我们能够做到这一点。
3、TypeScript和JavaScript实际上是可以互换的,何乐而不为呢?
由于JavaScript是TypeScript的子集,因此您可以在TypeScript代码中使用您想要的所有JavaScript库和代码。
4、interface 和 type
相同点:都可以描述一个对象和函数
interface
interface User { name: string age: number } interface SetUser { (name: string, age: number): void; }
type
type User = { name: string; age: number; } type SetUser = (name: string, age: number): void;
type AppId = ‘47041‘ | ‘47660‘ interface Item { productManual: string; online: string; complaint: string; demonstration: string; } // 方法1 type Store = { [key in AppId]?: Item } 方法2 interface Store { [key: string]: Item } export function getData(corpId: string, appId: AppId, key:Key) { const store:Store = { // 限时-test 已验证 "xxx": { ‘productManual‘: ‘111‘, ‘online‘: ‘222‘, ‘complaint‘: ‘333‘, ‘demonstration‘: ‘444‘ } } const app = store[appId]; if (!app) { throw new Error(‘找不到数据[appId]=‘ + appId); } const url = app[key]; if (!url) { throw new Error(‘找不到数据[key]=‘ + key); } return url; }
type DudeType = {
[key in Keys]: string
}
原文:https://www.cnblogs.com/qinStore/p/13524925.html