Я конвертирую некоторый код Javascript в Typescript, и я застреваю на базовом c импорте и экспорте:
Желаемая функциональность: я хочу иметь возможность импортировать POST_Requirements в нескольких другие файлы. Каждый файл, который вызывает POST_Requirements.ORGANIZATION (), получает новый экземпляр POST_Requirements, в котором хранится нужная переменная. Любое редактирование этого экземпляра не влияет на другие экземпляры внутри файла или любого внешнего файла.
Фактическая функциональность: любой файл, вызывающий POST_Requirements.ORGANIZATION (), получает новый экземпляр. Однако, если файл X редактирует свой экземпляр, экземпляр в файле Y подвергается такому же редактированию. Очень запутано, потому что это можно было бы предотвратить, используя «новый»
EXPORTED CLASS: post.requirements.ts
export class POST_Requirements {
readonly text_fieldnames: Array<string>;
constructor(
file_fieldnames: Array<string>,
text_fieldnames: Array<string>,
max_file_size: number = 25 * MEGABYTE,
max_fieldname_size: number = 200,
max_field_size: number = KILOBYTE
) {
this.file_fieldnames = file_fieldnames;
this.text_fieldnames = text_fieldnames;
this.max_file_size = max_file_size;
this.max_fieldname_size = max_fieldname_size;
this.max_field_size = max_field_size;
}
static ORGANIZATION(): POST_Requirements {
return new POST_Requirements(
ORGANIZATION_FILE_FIELDNAMES,
ORGANIZATION_TEXT_FIELDNAMES
);
}
}
Отдельный файл:
let a: POST_Requirements = POST_Requirements.ORGANIZATION();
let b: POST_Requirements = POST_Requirements.ORGANIZATION();
let a_sub: Array<string> = a.text_fieldnames;
let b_sub: Array<string> = b.text_fieldnames;
console.log(a_sub)
console.log(b_sub)
a_sub.reverse();
console.log(a_sub)
console.log(b_sub)
a_sub и b_sub всегда печатает одно и то же значение. В отдельном файле c_sub печатает тот же
Любое понимание того, почему это происходит таким образом, будет высоко оценено