小编Sea*_*ean的帖子

VS Code Typescript:展开类型工具提示

我已经尝试了很长时间才能让 VSC 工具提示向我显示函数的参数属性:

将鼠标悬停在界面上没有给我任何结果:

悬停在界面上的工具提示

将鼠标悬停在类型上是有效的,这很令人兴奋,但也很奇怪,因为接口不会递归扩展:

将鼠标悬停在类型上的工具提示

不幸的是,将鼠标悬停在函数上并不会扩展其参数:

创建函数的工具提示

我错过了什么吗?如果我可以看到参数的形状或类型文档,而不必转到函数的文件/d.ts,然后转到参数的类型文件,那就太不可思议了。

推断类型的示例:

推断类型工具提示

或者,VS Code 在您打字时为您提供这样的美感:

键入帮助工具提示

刚刚发现“添加缺少的属性”,它看起来非常有用:

添加缺少的属性工具提示 通过“添加缺少的属性”添加了属性

感谢您的帮助!

typescript visual-studio-code

11
推荐指数
1
解决办法
2112
查看次数

使用instanceof时,Typescript不会缩小变量范围

我试图理解为什么 TS 没有缩小inst到仅Bar在下面的示例中:

class Foo {}
class Bar { prop = "baz" }

function fn2(inst: Foo | Bar) {
    if (inst instanceof Foo) {
        inst = new Bar()
    }
    inst.prop // prop does not exist on Foo | Bar
}
Run Code Online (Sandbox Code Playgroud)

typescript

4
推荐指数
1
解决办法
611
查看次数

检查对象是否具有带有类型谓词的键

我有一种情况,我认为需要类型谓词或“缩小范围”?

const obj1 = { foo: 123 }
const obj2 = { bar: 456 }

type ObjKey = keyof typeof obj1 | keyof typeof obj2
function getVal(key: ObjKey) {
  return key in obj1 ? obj1[key] : obj2[key]
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,我是否在检查功能上放置了“类型保护”?不知道如何编写该示例:

function objHasKey(obj: object, key: string) {
  return obj.hasOwnProperty(key)
}
function getVal(key: ObjKey) {
  return objHasKey(obj1, key) ? obj1[key] : obj2[key]
}
Run Code Online (Sandbox Code Playgroud)

typescript

2
推荐指数
1
解决办法
756
查看次数

如何创建向任何给定对象类型添加字段的自定义实用程序类型?

我正在尝试修改接口(或类型)以在某些情况下包含额外的字段,我看到的实现如下所示:

interface Person {
  name: string
}
const person: WithAge<Person> = {name: "Foo", age: 123 }
Run Code Online (Sandbox Code Playgroud)

我怎样才能重新创建这个?

typescript typescript-generics

1
推荐指数
1
解决办法
31
查看次数