ts中number类型的数字不想赋值,想给空值怎么实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ts中number类型的数字不想赋值,想给空值怎么实现相关的知识,希望对你有一定的参考价值。

参考技术A ?的作用
四、属性数量不确定时的定义方法
如果使用接口来限定了变量或者形参, 那么在给变量或者形参赋值的时候, 赋予的值就必须和接口限定的一模一样才可以, 多一个或者少一个都不行。

但是开发中我们往往可能会遇到少一个或者多一个的场景。

(1)少一个,用可选属性
可选属性意如其名,用法也简单,只需要在属性名字后面加一个?即可。

// 需求: 如果传递了middleName就输出完整名称, 如果没有传递middleName, 那么就输出firstName和lastName
interface FullName
firstName:string
lastName:string
middleName?:string
[propName:string]:any


function say(firstName, lastName, middleName:FullName):void
// console.log( 我的姓名是:$firstName_$lastName );
if(middleName)
console.log( 我的姓名是:$firstName_$middleName_$lastName );
else
console.log( 我的姓名是:$firstName_$lastName );



say(firstName:'Jonathan', lastName:'Lee', middleName:"666");
say(firstName:'Jonathan', lastName:'Lee');
关于问号语法的原文链接: https://blog.csdn.net/weixin_39663933/article/details/111346766

参考文章: https://blog.csdn.net/weixin_46025371/article/details/116694992

TS 中 never 类型的妙用

问题: 对于一个接口,如何定义某个属性为number,其它不确定的属性都为string。

在解决这个问题时,never 类型就可以派上大用场。

看到这里,可能你二话不说,上来就要这些写:

interface IType 
	age: number;
	[key: string]: string;

上面这样写是会报错的。

这里要用到如下几个知识点:

  • never 是任何类型的子类型,也就是说 never 可以赋值给任何类型。

    下面的两行代码都不会有 TS 错误。

const a: number = \'\' as never;
const b: object = \'\' as never;
  • 类型扩张

    注:有些地方叫类型缩减,但是从表现出来的现象来看,叫类型缩减更合适一些。

两个类型的联合类型有可能会发生类型扩张,例如

type URStr = \'123\' | string; // 类型是 string

‘123\'string 类型的子类型,在经过联合之后,联合类型就变成 string 类型了。由于 \'123\' 类型范围小,string 类型的范围比较大,因此感觉叫类型扩张更合适一些。

有了上面两个知识点,我们就可以写成下面的样子,在 ITypeKeyAny 类型中的 age 类型设置为 never 后,不会和下面的 string 类型冲突,因为 never 类型是任何类型的子类型。在和 ITypeAge 类型联合时也不会冲突,并且 age 类型扩张为 number 类型。

interface ITypeAge 
  age: number;
  

interface ITypeKeyAny 
  age: never;
  [key: string]: string;


type Itype = ITypeAge | ITypeKeyAny;

如有问题,欢迎指正~

author: zgc

-------------------------------------------

个性签名:梦想不只是梦与想

如果您觉得这篇文章哪个地方不恰当甚至有错误的话,麻烦告诉一下博主哦,感激不尽。

如果您觉得这篇文章对你有一点小小的帮助的话,希望能在右下角点个“推荐”哦。

以上是关于ts中number类型的数字不想赋值,想给空值怎么实现的主要内容,如果未能解决你的问题,请参考以下文章

ts视频只能放几秒

将setState与typescript一起使用

ts的特殊数据类型

JavaScript 基本数据类型

oracle 存储过程 空值赋值问题

typescript变量定义