() => void
является потомком типа (param: any) => void
, а значит Ваш предикат в типе A становится истинным и уходит в ветку, где Вы возвращаете R из infer, который выводится к вершине иерархии - типу unknowntype A<T> = T extends (...param: infer P) => void
? P extends [infer R, ...unknown[]]
? R
: string
: string;
Какой смысл тогда в ON DELETE CASCADE?
<script>
async function a(){console.log('hi');}
async function b(){new Promise(resolve => {
for(let i = 0; i <= 1; i++) {
if(i === 1) resolve(i)
}
}).then((res) => console.log(res));}
b();
a();
</script>
console.log('hi')
, а только потом функция с console.log(res); Проблема решена, думаю вы запустили файл не используя локальный сервер или хостинг. Установите локальный сервер для тестирования. Вот урок: Устанавливаем локальный сервер (Open Server) или разместите его на хостинге. К сожалению не будет работать, если распаковать, и просто запустить index.html, а вот, если разместить в интернете на хостинге или на локальном сервере, то да - работать будет. Ещё можно попробовать запустить в Microsoft Edge как вариант, А Google Chrome , как я понял, по умолчанию в настройках безопасности запрещает выполнение локального скрипта, без использования локального сервера, или хостинга. Можно ещё залить на гитхаб и запустить, используя его как сервер.
You may call setState() immediately in componentDidMount(). It will trigger an extra rendering, but it will happen before the browser updates the screen. This guarantees that even though the render() will be called twice in this case, the user won’t see the intermediate state.
preserveAspectRatio="none"
(пункт добавлен на основании замечания от Рустам Байназаров )