ts基础学习

// https://segmentfault.com/q/1010000021160333?utm_source=sf-similar-question

 

// interface Test {

// one: boolean

// two: string

// }

// declare type K = keyof Test

// function foo<K extends keyof Test>(key: K, val: Test[K]) {

// //

// }


 

function sun(a: number, b: number): number {

return a + b

}

 

let b: "male" | "female" //用字面量赋值代表只能是这两个值的其中一个

 

b = "hello" //否则就会报错

 

let c: boolean | string; //联合类型

 

let d: number;

let e: any

e = 'hello'

d = e //any可以赋值给任何类型的变量,但是unknown不能被赋值给另个有类型变量,除非用类型判断或断言

 

let obj1: object

obj1 = function () { } //如果我们直接指定obj是一个对象类型,那么function,arrray都是对象

 

let obj2: { aaa: string } //如果这么指定,那么这个对象里面必须有且仅有一个aaa的属性

obj2 = function () { }

 

let obj3: { aaa: string, bbb?: number }

obj3 = { aaa: 'aa' }

 

let fn: (a: number, b: number) => number //给函数做限制

fn = function (a, b, c) {

return a + b

}

 

let arr: string | number[]

arr = [1]

 

let tup: [string, number] //元祖tuple代表长度固定的数组

 

enum Gender {

Male = 0,

Female = 1

}

let human: { name: string, gender: Gender }

human = {

name: "a",

gender: Gender.Male //这个时候gender属性是0

}

//类型别名,这样可以让我们的类型可以复用

type myType = 1 | 2 | 3 | 4 | 5

let num1: myType

let num2: myType

 

type fnType = (a: number, b: number) => number

let fn1: fnType

let fn2: fnType

 

//interface是用来定义object的,是可以重复声明的,等于合并了,并且接口里面的属性和方法不能有实际的实现

//只能用来定义类型.

interface myObject {

name: string,

sayHello: () => number

}

interface myObject {

age: number

}

//接口可以用来限制class也可以限制实例

class MyObject implements myObject {

name = "name"

age = 18

sayHello() { return 1 }

}

let obj: myObject

 

class Test {

//语法糖,等价于类里面有个public a属性

constructor(public a: string) { }

}

 

function test<T>(a: T): T { return a }

test(10)

test<string>('')

 

interface MyTest {

length: number

}

//意识是传进人的参数必须extends了MyTest这个接口

function test1<T extends MyTest>(a: T): number {

return a.length

}

test1({

length: 2

})

//生成tsconfig可以使用tsc --init有了tsconfig文件之后,执行tsc或者tsc -w就会对所有ts文件生效

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值