typescript 学习 系列(三)

1. interface 和 type 类型别名
	//(1)interface
	interface a{
      x:number,
      y:string
    }
    //给这个变量加上类型注解
    var b:a = {
      x:1,
      y:'2'
    };

	/*还可以添加一些属性  
		1.readonly 是一个只读属性
		2. ? 添加问号,可以规定这个属性可以不定义,
		3. [prposName :string]:any  如果你不确定后续还会有什么属性传入,设置这个。
	*/ 
	  // (1) readonly
		interface interfaceB {
		  // readonly 表示id 是一个只读属性,下面修改了id,就会报错。如果想不报错就需要去掉readonly。
	      readonly id: number
	    }
	    var interfaceA :(data:interfaceB)=> void = (data)=>{
	      //下面报错:无法分配到 "id" ,因为它是只读属性。
	      data.id = 12  
	    }
	  // (2) ?
    	interface interfaceC {
	      id: number,
	      //如果把?去掉,就会报错,告诉你interfaceD缺少name属性,因为interfaceC需要该属性
	      name?: string
	    }
	    var interfaceD:interfaceC = {
			id:1
		}
	  // (3)[prposName :string]:any 
		// 注意:如果有些属性多余的,你这样传对象没问题,如果以字面量形式传就会报错没有设置多余属性
		interface interfaceS {
			name:string
		}
	    var interfaceG :(data:interfaceS)=> void = (data)=>{
	     	console.log(data) 
	    }
	    //对象形式传入
	     var interfaceE = {
	      name : 'zqc',
	      super : 'body'
	    }
	    interfaceG(interfaceE)
		//字面量形式传入,下面传入形式会报错。(传入字面量这样会进行强校验,发现多出东西就会报错。)
		/*interfaceG({
	      name : 'zqc',
	      super : 'body'
	    })*/
		/*如果后期还需要其他变量加入,可以在类型里面加[prpoName :string]:any 。这样上面就不会报错了。*/

	// interface 继承 extends
	  interface jichengA {
	    name : string
	  }
	  //b继承了a里面的name属性。
	  interface jichengB extends jichengA {
	    set():string
	  }
	  var jichengC = (data:jichengB)=>{
	    console.log('继承')
	  }
	  //调用时必须传入name,不然就会报错
	  jichengC({
	    name:'zqc',
	    set(){ return 'set' }
	  })


	//(2)type 
	type biemingA  = string
    var biemingB:biemingA = '12'

	// interface 和 type 类型别名的区别 :
	// type 可以设置简单的类型,interface 只能设置对象的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值