Object.create(null)
) вместо Map
- работа с ним на порядок быстрее.Map
соответствует порядку добавления и не может быть изменен постфактум. Вам следует для сортировки получить из Map
массив, отсортировать, и либо создать новый Map
из оного, либо заново добавить все значения в исходный, предварительно тот очистив. Map
заранее с пустыми значениями - перезапись не меняет порядок. body
в зависимости от присутствия компонента на странице(я правильно понял?) - делай это руками: добавляй body
класс на created
, убирай на destroyed
. type ClearIndex<T> = {
[ P in keyof T as string extends P ? never : P ] : T[P]
};
class FOO implements ClearIndex<Service_FOO > {
methodFoo() {}
}
Record<string, () => void>
имеет "index signature", т.е. заявляет, что обращение по любому ключу string
вернёт () => void
. Service_FOO
расширяет этот тип(а не сужает), потому Service_FOO
имеет ту же index signature и уточнённый конкретный метод. this.$refs.child.$refs.childOfChild
.alias: {
'@component-1': {
'site1': path.resolve(__dirname, './site1/component-1.vue'),
'site2': path.resolve(__dirname, './site2/component-1.vue'),
}[process.env.TARGET]
}
import Component1 from '@component-1';
<component :is="var"/>
. list2
никак не связан с item
в отличие от testList
. В list2
у вас должны лежать не цифры а объекты с данными, по которым будет строиться соответствующий item
, сами же item'ы должны быть перечислены через v-for
, чтобы когда list2
менялся - менялся и их порядок. immediate: true
, и, так как он задан на самом компоненте, вызван он будет сразу перед хуком created
, когда vue-компонент уже создан но ещё не примонтирован. Соответственен никакого canvas
на странице в этот момент нет. mounted
через this.$watch
. let a1 = {
channelID: {
RegExp: ["\\d+", true],
description: "d1"
},
content: {
RegExp: [".+", true],
description: "d2"
}
};
type T1 = {[K in keyof typeof a1]: string}
type Args = {
[key: string]: {
RegExp: [string, boolean],
description: string
}
}
function createArgs<T extends Args>(args: T): T {
return args;
}
type TStringKeys<T extends Args> = {[K in keyof T]: string};
let a1 = createArgs({
channelID: {
RegExp: ["\\d+", true],
description: "d1"
},
content: {
RegExp: [".+", true],
description: "d2"
}
});
type T1 = TStringKeys<typeof a1>
К сожалению на текущий момент(ts4.2.3) избавиться от функции-обёртки не получится.