我有一个像这样的枚举:
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 ...
有没有办法以任何其他方式实现与模板文字创建的完全相同的类型?
早上好,
\n我正在努力实现以下目标,
\n创建一个将从以下对象获取键的类型
\nconst obj = {\n setName: () => void;\n setAge: () => void;\n}\nRun Code Online (Sandbox Code Playgroud)\n并使用映射类型生成元组类型,使得
\n[ \xe2\x80\x9csetName\xe2\x80\x9d, \xe2\x80\x9csetAge\xe2\x80\x9d ]\nRun Code Online (Sandbox Code Playgroud)\n我在这里可能完全错误,但对于映射类型我认为这会起作用
\ntype MyType<T> = {\n [P in keyof T]: T[P]\n}\nRun Code Online (Sandbox Code Playgroud)\n但如果 T 是我上面展示的对象的类型,我最终会得到以下类型
\ntype MappedType = {\n setName: () => void;\n setAge: () => void;\n}\nRun Code Online (Sandbox Code Playgroud)\n但我想要的是
\ntype MappedType = [setName, setAge]\nRun Code Online (Sandbox Code Playgroud)\n任何帮助是极大的赞赏。
\n我有以下结构:
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)
任何帮助将非常感激
我知道,为了良好的实践,StringBuilder应该使用预期内容的容量值进行初始化。否则,编译后增加大小将是一个昂贵的操作。
我的问题是,如果我们不知道预期的大小,应该如何处理?是否有一个标准值/方法来避免幕后昂贵的操作?
如果没有,如果容量大于初始化时给定的值,是否有可能在代码中发出警报/记录?
javascript ×2
types ×2
typescript ×2
arrays ×1
bundler ×1
capacity ×1
java ×1
mapped-types ×1
object ×1