А как появляются лидеры в гильдиях QA/Dev? Их кто-то назначает, озвучивая примерный скоуп ответственности, или это самопровозглашённые лидеры с амбициями от природы?
Я один раз схватывал осознанное сноведение, будучи уже «взрослым» двадцатилетним чуваком.
Как-то мне сказали, что если во сне мелькает мысль «а не сон ли это?», то стоит посмотреть на руки и ты сможешь всё полностью контролировать.
Самое интересное, что сном управляешь не ты, а твоё внутреннее Я. Я например вместо того, чтобы погонять на спорткаре, поуправлять вертолётом или сыграть концерт перед стотысячным стадионом, летал, смотрел на динозавров и катался на бесконечным ледяных горках.
И вроде бы как бы управлял сном, но был не целиком собой, а только своим кусочком.
Возможно я скапитаню, но это называется номинативная и структурная типизация.
Меня например смущает в C#, что необходимо явно указывать интерфейс, даже если структура ему полностью соответствует interface INamed {
name: string;
}
class MyClass {
public name: string: 'My Class name';
}
function logName(data: INamed): void {
console.log(data.name);
}
logName(new MyClass()); // В язык с номинативной типизацией компилятор будет ругаться
В тайпскрипт такой проблемы не будет, но! Эта вся история работает в обе стороны, что указано в твоём примере, не думаю что это проблема конкретно тайпскрипта: class MyClass {
public name: string = 'My Class name';
}
function processMyClass(data: MyClass): void {
//
}
processMyClass({name: 'another string'});
И да, как писали выше решается это через что-то вроде private readonly __classGuard: 'MyClass' = 'MyClass';
Как-то мне сказали, что если во сне мелькает мысль «а не сон ли это?», то стоит посмотреть на руки и ты сможешь всё полностью контролировать.
Самое интересное, что сном управляешь не ты, а твоё внутреннее Я. Я например вместо того, чтобы погонять на спорткаре, поуправлять вертолётом или сыграть концерт перед стотысячным стадионом, летал, смотрел на динозавров и катался на бесконечным ледяных горках.
И вроде бы как бы управлял сном, но был не целиком собой, а только своим кусочком.
Меня например смущает в C#, что необходимо явно указывать интерфейс, даже если структура ему полностью соответствует
interface INamed {
name: string;
}
class MyClass {
public name: string: 'My Class name';
}
function logName(data: INamed): void {
console.log(data.name);
}
logName(new MyClass()); // В язык с номинативной типизацией компилятор будет ругаться
В тайпскрипт такой проблемы не будет, но! Эта вся история работает в обе стороны, что указано в твоём примере, не думаю что это проблема конкретно тайпскрипта:
class MyClass {
public name: string = 'My Class name';
}
function processMyClass(data: MyClass): void {
//
}
processMyClass({name: 'another string'});
И да, как писали выше решается это через что-то вроде
private readonly __classGuard: 'MyClass' = 'MyClass';