小编Jor*_*iro的帖子

模板文字类型等效项

我有一个像这样的枚举:

export enum ApiFunctions {
  "setHidden" = "HIDE",
  "setReadOnly" = "SET_READ_ONLY",
  "setVisible" = "SHOW",
  "setDescription" = "SET_DESCRIPTION",
  "setName" = "SET_NAME",
  "makeRequest" = "MAKE_REQUEST"
}
Run Code Online (Sandbox Code Playgroud)

今天早些时候,我从这个枚举创建了一个新类型,如下所示:

export type ApiActions = Exclude<`${ApiFunctions}`, "MAKE_REQUEST">
Run Code Online (Sandbox Code Playgroud)

此类型返回除“MAKE_REQUEST”之外的所有键值(SET_DESCRIPTION,....)

问题是模板文字类型是在 ts 4.1 上发布的,当前捆绑器的 ts 版本是 3.9.7,我无法真正更新它,因为它是外部提供的。

我尝试通过以下方式复制这种类型:

export type Something = Exclude<typeof ApiFunctions[keyof typeof ApiFunctions], "MAKE_REQUEST">
Run Code Online (Sandbox Code Playgroud)

但是这种类型并没有给我每个键的实际字符串值,而是SET_NAME | SET_DESCRIPTION ...给了我以下行中的内容ApiFunctions.setName | ApiFunctions.setDescription ...

有没有办法以任何其他方式实现与模板文字创建的完全相同的类型?

javascript types bundler typescript template-literals

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

使用映射类型生成元组类型

早上好,

\n

我正在努力实现以下目标,

\n

创建一个将从以下对象获取键的类型

\n
const obj = {\n   setName: () => void;\n   setAge: () => void;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

并使用映射类型生成元组类型,使得

\n
[ \xe2\x80\x9csetName\xe2\x80\x9d, \xe2\x80\x9csetAge\xe2\x80\x9d ]\n
Run Code Online (Sandbox Code Playgroud)\n

我在这里可能完全错误,但对于映射类型我认为这会起作用

\n
type MyType<T> = {\n  [P in keyof T]: T[P]\n}\n
Run Code Online (Sandbox Code Playgroud)\n

但如果 T 是我上面展示的对象的类型,我最终会得到以下类型

\n
type MappedType = {\n    setName: () => void;\n    setAge: () => void;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

但我想要的是

\n
type MappedType = [setName, setAge]\n
Run Code Online (Sandbox Code Playgroud)\n

任何帮助是极大的赞赏。

\n

types typescript mapped-types

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

将值推入数组,该数组是对象的值

我有以下结构:

let mappings = {
    "1002": ["1000", "1003"],
    "2000": ["2001", "2002"]
}
Run Code Online (Sandbox Code Playgroud)

我想添加这条数据

const issueTypes = ["4000"]
Run Code Online (Sandbox Code Playgroud)

到以此结尾的每个对象键数组

mappings = {
    "1002": ["1000", "1003", "4000"],
    "2000": ["2001", "2002", "4000"]
}
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所拥有的:

mappings = Object.keys(mappings).reduce((prev, curr, index) => {
            console.log("prevous", prev)
            console.log("curret", curr)
        return ({
            ...prev, [curr]: //unsure of this part which is kind of crucial
        })}, mappings)
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激

javascript arrays object

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

当字符数未知时定义 StringBuilder 容量

我知道,为了良好的实践,StringBuilder应该使用预期内容的容量值进行初始化。否则,编译后增加大小将是一个昂贵的操作。

我的问题是,如果我们不知道预期的大小,应该如何处理?是否有一个标准值/方法来避免幕后昂贵的操作?

如果没有,如果容量大于初始化时给定的值,是否有可能在代码中发出警报/记录?

java stringbuilder capacity

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