这门课之前刚学习了js,看到这门语言我的第一想法就是,这和js有什么关系为啥名字这么像?
TypeScript 是 Javascript 的超集,遵循最新的 ES6、ES5 规范,TypeScript 扩展了 JavaScript 的语法。TypeScript 更像后端 Java、C#这样的面向对象语言,可以让 JavaScript 开发大型企业项目。
与js的区别
- typescript是js超集,用于解决大型项目代码复杂的问题。
- 支持静态和动态类型,可以通过编译发现错误。
- 不允许改变变量的数据类型。
基础知识
基本类型
//bool类型
let flag: boolean = true;
// 数字类型
let num: number = 123;
let num: number = 3.1415926;
// 字符串
let str: string = "Hello,TypeScript";
// 数组
let arr: number[] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
// 元组
let user: [number, string];
let userId = 10086;
user = [userId, userName];
//enum枚举类型
enum Flag {
success,
error,
overtime
};
let s: Flag = Flag.overtime;
console.log(s);
//null类型
let n: null = null;
//undefined类型
let u: undefined = undefined;
//any类型 TypeScript 中的 any 类型表示任意数据类型。
let flag: any = true;//布尔型
let num: any = 123;//数字型
let str: any = 'TypeScript';//字符型
函数
基本格式:
function 函数名(参数列表): 返回值类型 {
函数体 ...
[return 返回值;]
}
function add(x:any[]):any{
if(typeof x[0]==='string'){
return x.join()
}
if(typeof x[0]==='number'){
return x.reduce((acc,cur)=>acc+cur)
)
}
类
特点:
- 增加了public/private/protected修饰符。
- 抽象类只能继承,抽象方法必须被子类实现。
- 约束类使用inplements关键字
接口
接口是一种规范的定义,它定义了行为和动作的规范,用途就是对行为和动作进行规范和约束。
//函数类型接口
interface encrypt {
(key: string, value: string): string;
}
var md5: encrypt = function (key: string, value: string): string {
return key + "----" + value;
}
console.log(md5("name", "zhangsan"));
var sha1: encrypt = function (key: string, value: string): string {
return key + "====" + value;
}
console.log(sha1("name", "lisi"));
高级类型
联合类型
“|”表示联合类型
function getlength(arg:number|string):number{
reutrn arg.length
}
交叉类型
“&”表示交叉类型
interface Person { name: string }
interface People { sex: string }
type PersonMan = Person & People
泛型
泛型指的是在定义函数/接口/类型时,不预先指定具体的类型,而是在使用的时候在指定类型限制的一种特性。
function test <T> (arg:T):T{
console.log(arg);
return arg;
}
基础操作符
typeof:获取类型
keyof:获取所有键
in:遍历枚举类型
T [K]:索引访问
extends:泛型约束
Partial:类型属性变为可选
Required:类型属性变为必选
总结
typescript以js为基础,扩展了javascript的语法,在语法上与java等语言十分相似,在学习中可以类比这几种语言,寻找ts与javascript和java的相同点和不同点,帮助我们更快学习。