TLDR; есть более полезные практики
{
let blockScopedVar = true;
const letPlusRedefineForbiddenVar = true;
}
Не используйте evil-практики. JavaScript: The Good Parts
- объекты расширяются в run-time
- для создания объекта достаточно литерала {}
ES 2015 +: Class сахар
Object.create(
prototype
[, properties]
)
let foo = 'Alex';
foo = 42;
foo = (bar) => bar.zzz;
foo = { pervii: 'Alex', ftoroy: 'Baumgertner' };
foo();
Uncaught TypeError: "foo" is not a function
let lol : string = 'Alex';
let bar: number = 37;
let baz : Person = {firstName: 'Alex'};
let foo = (person: Foo) : string => person.firstName;
class Foo {} или interface Person {}
Compile time error: `foo` is not a function
Video: Как называть переменные: Григорий Петров
Перераспределение сложности:
Отвечает на вопрос:
/** @type {String} */
let name = 'Alex';
/** @type {Number} */
let age = 37;
/**
* @typedef {Object} Person
* @property {String} firstName
* @property {Function} feed
*/
let presenter = {
firstName: 'Alex',
feed: (food) => 'yummy!'
};