如何在typescript中指定可选属性?


  有时不是所有定义在interface中的属性都是必须的,typescript中便为我们提供了可选属性。带有可选属性的interface定义和c#语言很相似,以?紧跟变量名后边表示。如下代码:

  大家可能会问既然是可选属性,可有可无的,那么为什么还要定义呢?对比起完全不定义,定义可选属性主要是:如果存在属性,能约束类型,而这也是十分关键的。

在右面的编辑器中去试一试吧!

}

首先先说说接口有什么用

接口是一种规范的定义,定义了行为和动作法规范,在程序设计中,接口起到了限制和规范的作用,接口类型有属性,函数,可索引和类

属性接口(对json的约束)

箭头所指的地方我们给定义了传入的参数类型,必须是一个,且必须是string类型,那么我想对json格式进行约束,就如下图

json格式传参并约束为string类型,箭头从下往上看

在传参的时候,需要将名字和参数一起传入到函数中

但是,一个还好说,如果是贼多个呢?这时候就需要接口约束定义了

现在,我定义一个函数,必须传入对象name和food

定义接口,必须分号结尾

这样,我们传入的参数就能被我们所定义的接口约束了,咱们传入参数

如果你传入这两个属性以外的属性就会报错

说到可选,很多人就会想到?可选属性,没错,就是问号

没加问号之前,属性必须按照interface接口来传入

可以看到,food属性变成了可传可不传

可索引接口(不常用,主要对象是数组,对象的约束)

数组的约束,也叫可索引接口

打印出索引为0的参数,应为fish

约束类型是string,也可以是any,传入的时候必须是花括号,属性名+参数,不常用,了解就好

类类型接口(对类的约束)

既定义了属性,又定义了方法

使用implements来用接口进行对类的约束,必须要有接口中已经定义了的类和属性

就是爸爸说啥,儿子就要干啥(滑稽)

今天就更新到这里啦,如果对你有帮助请给个小小的三连吧,会日更的!!!

}

上面的示例将其转换$eventany类型.这样可以降低代码的成本.没有类型信息可以揭示事件对象的属性并防止愚蠢的错误.


将HTMLInputElement作为事件类型的通用传递也应该起作用:


这是另一个适合我的修复:


我一直在寻找针对React的类似TypeScript错误的解决方案:


我这样做的方式如下(比类型断言更好):

这假设您只对target属性感兴趣,这是最常见的情况。如果您需要访问 的其他属性event,更全面的解决方案涉及使用&类型交集运算符:


}

我要回帖

更多关于 选的五行属性是什么 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信