严格定义接受对象,修改其值并以TypeScript返回的函数的类型

MK萨菲

我想创建一个函数,该函数使用与接收到的原始对象相同的键但值等于的新对象null

所以...

function nullify(arg) {
  var returnObj = {}

  for (var key in arg) {
    returnObj[key] = null
  }

  return returnObj
}

我想向此函数添加类型,以便当我尝试访问返回的对象上不存在的属性时,TypeScript编译器将发出警告。例如:

var nulled = nullify({
  a: 1,
  b: 2
})

console.log(nulled.foobar) // Error `foobar` doesn't exist.

这样有可能吗?也许通过使用泛型和keyof

抱歉,这里有完整的TypeScript新手

帕斯

使用TS 2.1时,可以使用映射类型。默认情况下,实际上通常是一个类型type | number但是,如果您严格使用映射类型检查空对象,则是更具描述性的方法。

type Nullified<T> = {
    [P in keyof T]?: null
}

function nullify<T>(arg:T) : Nullified<T> {
  var returnObj = {}

  for (var key in arg) {
    returnObj[key] = null
  }

  return returnObj
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TypeScript:键入在启用严格的函数类型时接受可更新对象的函数

如何使Typescript推断对象的键但定义其值的类型?

TypeScript Map类构造函数,其初始值不接受2种不同类型

如何为函数定义Typescript对象的返回值?

Typescript-键入一个接受数组,更改其属性之一但仍返回相同类型数组的函数

TypeScript推断接受函数作为参数的函数的返回类型

TypeScript映射函数从其参数类型返回的类型

Typescript:返回预定义联合类型的函数

如何在 TypeScript 中接受我的函数的通用返回类型?

Typescript函数返回NaN值但数字类型

仅接受数组值键(并推断返回类型)的函数

类型转换C函数的返回值是否可以接受?

如何定义返回类型取决于其参数值的函数?

在TypeScript中,如何定义提供从成员对象返回的值的方法的类型?

从TypeScript中的函数返回对象(具有特定键,值类型)

python对象接受len函数对其运行

函数返回值中的部分类型不如预期的那么严格

如何为接受类本身而不是其对象的函数编写类型签名

TypeScript映射类型更改值函数的返回类型

从返回值推断 typescript 函数的返回类型

如何基于现有对象值定义Typescript对象类型?

TypeScript函数,该函数返回与输入相同类型的值

如何使用Typescript定义lodash reduce函数的返回类型?

根据TypeScript中的参数在字典中定义函数的返回类型

从异步函数销毁的对象中的类型在Typescript中返回

如何在TypeScript中使用预定义的可接受值正确声明自定义类型?

在TypeScript中定义类型安全的通用对象访问器函数

如果函数将父类作为其返回类型,则TypeScript可以返回子类吗?

如何使TypeScript基于返回值识别函数的参数类型?