1.基本数据类型
//npm install typescript ts-node -g
//code runner
//ts中冒号后面的都是类型
const str: string = 'hello zf';
const num: number = 12;
const boolean: boolean = true;
//联合类型
let age: string | number = 1;
age = 'hello';
//对象 数组 函数
const arr: number[] = [1,2,3];
//元组
const tuple: [string, number] = ['zf', 1];//指定第一个必须是字符串,第二个是数字
console.log('tuple')
let n: null = null;
let u: undefined = undefined;
//枚举 只是声明类型的
enum USER_ROLE {
USER,
MANAHGER,
ADMIN
}
console.log(USER_ROLE.USER) //0
enum USER_ROLE2 {
USER = 'user',
MANAHGER = 'manager',
ADMIN = 'admin'
}
console.log(USER_ROLE2.USER) //user
//any 如果区分不出来是什么类型,可以标记为any类型
const array: any = [{}, 'a', 123]
//object类型 非原始数据类型
//Object.create(arr);
const create = (obj:object)=> {
}
create({});
create([]);
create(function(){});
//对象类型 (重要)
export {}
2.接口 用来描述对象形状的 interface
interface ISchool {
readonly name: string,
age: number,
address?: string //表示这个属性可有可无
}
let school: ISchool = {
name: 'zf',
age: 11,
address: 'huilongguan'
}
//school.name = 'www' 不可以
//接口可以扩展
interface Izhuf extends ISchool {
type: string
[key: string]: any //任意类型
}
let zhuf: Izhuf = {
...school,
type: 'web',
a: 1,
b: 2
}
//类型断言,表示这个对象就是这样一个类型
let school2: ISchool = ({
name: 'zf',
age: 11,
address: 'hhhhh',
lessons: ['吃饭','学习']
}) as ISchool
3.function
//函数主要关系返回值和参数
function sum1(a: string, b: string): string{
return a + b;
}
sum1('a', 'b');
//可以通过表达式来定义
//声明一个类型
type Sum = ((aa: number, bb: number) => number)| string //表示类型是一个函数或者字符串
const sum2:(a: number, b: number) => number = (a:number, b:number):number => a + b
const sum3:Sum = (a:number, b:number):number => a + b
//接口
interface Sum2 {
(a: number, b: number): number
}
//区别type和interface
//interface 可以继承 可以被类来实现
//type仅仅是一个别名 一版在定义联合类型,定义临时变量时可以使用
let sum33 : Sum = (a: number, b: number): number => a + b;
sum33 = 'hello'
4.泛型 generic
//泛型 用来在代码执行时传入的类型,来确定结果
function createArray<T>(len:number, value:T):T[]{
let result = [];
for(let i=0;i<len;i++){
result.push(value);
}
return result;
}
let arr = createArray(3, 'hello')
//多个泛型 元组的交互[boolean, number]= [number, boolean]
const swap = <T,K>(tuple:[T,K]):[K,T]=>{
return [tuple[1],tuple[0]]
}
swap([1,2])
swap<string, number>(['2',3])
export {}