«Ошибка ссылки: модуль не определен» при оценке инструкции typescript

#typescript

#typescript

Вопрос:

Вот мой код

 // properties.ts
export const properties = {
    title: "Google"
};

// example.ts
import { properties } from './properties.ts';

console.log(properties.title); // Prints Google
console.log(eval("properties.title")); // Expected to print Google but throws ReferenceError: properties is not defined
  

Однако,
console.log(eval(‘properties_1.properties.title’)) // Печатает Google

Но как вывести «properties_1» — это моя забота.

Ответ №1:

Инструкция import в TS переносится в новую переменную. Это по умолчанию в typescript, и eval не может вычислить это.

Я пробовал так, и это сработало,

 import { properties } from './properties';
let p = properties;
console.log(p.title); // Prints Google
console.log(eval('p.title'));
  

Это можно сделать другим способом, импортировав свойства в переменную,

 import * as properties  from './properties';
console.log(properties.properties.title); // Prints Google
console.log(eval('properties.properties.title')); // Prints Google
  

Убедитесь, что вы скомпилировали этот способ,

 >tsc dynamic.ts -t ES6 -m commonjs