TS的开始之旅--接口

前言 TS的最好文档就是官网文档 官方接口文档地址

接口
ts里面对于obj的类型定义在上篇已经写过  
但是当我们想定义一个obj 内部的任意一个属性都绑定上属性就需要用到接口了
普通定义
interface test {
	name:string,
	sex:string,
	age:number
}

let a : test = {name:'123',age:2,sex:'男'} //ok 
let a :test = {name:123,age:18,sex:'男'} //error ,name的类型错误

在函数中的运用
interface  fun {
	key:string,
	val:number
}

function isFun(someValue:fun){
	console.log('函数的参数名是someValue,参数格式需要符合接口fun ')
}

isFun({key:'12345',val:14}) //ok

isFun({key:123,val:18}) //error  //key的值类型错误

//或者是少参数
isFun({key :'123'})  //error ,缺少val参数
//在js函数中 我们通常会有一些非必填的参数  ts也支持我们接口里面的属性不是全都必须的
interface  testOption{
	key?:string,
	val?:string,
}
//再属性后面加? 就可以设置成了非必填参数了
function testOption (value:testOption){
	console.log(value)
}

testOption ({key : '123'})
只读属性
一些对象属性只能在对象刚刚创建的时候修改其值。 你可以在属性名前用 readonly来指定只读属性:
interface readOnly{
	readonly  x:number,
	readonly  y:number,
}
//可以通过赋值一个 变量  然后 x和y就不可以再次发生改变
let point :readOnly = {x:1,y:2}
point.x = 5 //error

TypeScript具有ReadonlyArray<T>类型,它与Array<T>相似,只是把所有可变方法去掉了,因此可以确保数组创建后再也不能被修改:
let arr : number[] = [1,2,3,4.5]
let ro : readonlyArray<number>  = a
ro[0] = 12; // error!
ro.length = 100; // error!
//对  ro的操作全都不可以
//当然 可以通过类型断言来更改属性
a = ro as number[]

函数类型
//接口能够描述javascript中对象拥有的各种外形.除了描述带有属性的普通对象外,接口也可以描述函数
//为了使用接口表述类型.我们需要给接口定义一个调用签名.它就像是一个只有参数列表和返回值类型的函数定义.函数列表里每个参数都需要名字和类型
interface SearchFunc {
  (source: string, subString: string): boolean;
}

let myFun : SearchFunc ;
myFun  = function(s:string,sub:string){
	console.log(s,sub);
	return 1 >  0
}
myFun  ('111','222')


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值