从两个只读数组的并集创建typescript类型

从两个只读数组的并集创建typescript类型,typescript,visual-studio-code,Typescript,Visual Studio Code,我有下面的typescript代码,其中定义了两个只读数组,然后基于这两个数组的并集创建一个类型。但是,当我试图定义类型为Note的变量时,vscode没有给我任何智能感知。为什么呢?有没有更好的办法来解决我在这里想要达到的目标 const allNotes = ["A", "A#", "B", "C", "C#", "D", &

我有下面的typescript代码,其中定义了两个只读数组,然后基于这两个数组的并集创建一个类型。但是,当我试图定义类型为
Note
的变量时,vscode没有给我任何智能感知。为什么呢?有没有更好的办法来解决我在这里想要达到的目标

const allNotes = ["A",
    "A#",
    "B",
    "C",
    "C#",
    "D",
    "D#",
    "E",
    "F",
    "F#",
    "G",
    "G#",] as const

const allNotesWithFlats = [
    "A",
    "Bb",
    "B",
    "C",
    "Db",
    "D",
    "Eb",
    "E",
    "F",
    "Gb",
    "G",
    "Ab"
]
type Note = typeof allNotes[number] | typeof allNotesWithFlats[number];

const n : Note = '' // No intellisense

第二个数组将
忘为const

const allNotes = ["A",
    "A#",
    "B",
    "C",
    "C#",
    "D",
    "D#",
    "E",
    "F",
    "F#",
    "G",
    "G#",] as const

const allNotesWithFlats = [
    "A",
    "Bb",
    "B",
    "C",
    "Db",
    "D",
    "Eb",
    "E",
    "F",
    "Gb",
    "G",
    "Ab"
] as const
type Note = typeof allNotes[number] | typeof allNotesWithFlats[number];

const n : Note = '' // No intellisense

这对我来说很好。

你忘记了第二个数组中的
为const

const allNotes = ["A",
    "A#",
    "B",
    "C",
    "C#",
    "D",
    "D#",
    "E",
    "F",
    "F#",
    "G",
    "G#",] as const

const allNotesWithFlats = [
    "A",
    "Bb",
    "B",
    "C",
    "Db",
    "D",
    "Eb",
    "E",
    "F",
    "Gb",
    "G",
    "Ab"
] as const
type Note = typeof allNotes[number] | typeof allNotesWithFlats[number];

const n : Note = '' // No intellisense
这对我很管用