interface A {}
interface B {}
interface C {}
f(type: 'a'): A;
f(type: 'b'): B;
f(type: 'c'): C;
f(type: string): any {
// ...
}
type EventType = 'a' | 'b' | 'c';
type Response<T> =
T extends 'a' ? A :
T extends 'b' ? B :
T extends 'c' ? C :
any;
f<T extends EventType>(type: T): Response<T> {
// ...
}
Если нет такого data-name, то ищем дальше элементы удовлетворяющие селектору
for (var key of EmulatorDeviceData) {
const elem = document.querySelector('webview[data-name="' + EmulatorDeviceData[key].ID + '"]');
if (elem) {
elem.setUserAgentOverride(EmulatorDeviceData[key].UA);
break;
}
}
timer1.tick() // this === timer1
function setInterval(func, delay) {
// ...
func(); // нет точки, поэтому this === undefined, если контекст явно не привязан методом bind
// ...
}