class BaseLol {
/* ... */
static exportCallable<T extends { new (...args: any[]): any;}>(this: T) {
return new Proxy(this, {
apply(ctor, _, args) {
return new ctor(...args);
}
}) as T & ((...args: ConstructorParameters<T>) => InstanceType<T>);
}
}
class Lol extends BaseLol {
constructor(public name: string) {
super();
this.name = name.toUpperCase();
}
}
export default Lol.exportCallable();
import()
. Не будет вызвана - вообще никогда не загрузит. В vue суть та же, просто vue вызовет import
тогда и только тогда, когда надо будет нарисовать компонент\открыть страницу.import('./some.js').then(...)
- some.js
и все импорты внутри(которые есть только там) - будет вынесен в отдельный чанк, vue - https://ru.vuejs.org/v2/guide/components-dynamic-a... type Mappable = {
foo: number[];
bar: string[];
}
function mapValues<T extends Record<string, unknown[]>>(obj: T) {
let key: keyof T;
for (key in obj) {
console.log(`obj.${key}`, obj[key].map(val => `[${val}]`));
}
}
const complexObject = {
foo: [1, 2, 3],
bar: ['a', 'b', 'c'],
оппа: 'нежданчик'
}
const haHaPathetic: Mappable = complexObject;
mapValues(haHaPathetic);
поэтому я указал, что mainUtilites.mustasheItemABuild можно просто рассматривать как вставку HTML как простой
keyof
. (это же и причина почему ts сам так не делает)type Mappable = {
foo: number[];
bar: string[];
}
function mapValues(obj: Mappable) {
let key: keyof Mappable;
for (key in obj) {
console.log(`obj.${key}`, obj[key].map(val => `[${val}]`));
}
}
const complexObject = {
foo: [1, 2, 3],
bar: ['a', 'b', 'c'],
оппа: 'нежданчик'
}
mapValues(complexObject);
Можно конечно накостылить ещё какой-нить шляпы, но не нужно.