union-тип, то без явного уточнения(narrowing) типа через if он и остаётся union, Как задать каждому методу свой тип, я указал в комменте выше.
Access-Control-Allow-Origin не нужно.Access-Control-Allow-Origin действительно нужен. Тут мы переходим к вашей проблеме. На первый взгляд ваш конфиг должен работать, попробуйте для начала сделать add_header 'Access-Control-Allow-Origin' '*'; если всё заработает - проблема в указанном домене, разбирайтесь в чём разница. Также попробуйте перенести add_header в if(OPTIONS).
{
const undefined = 1; // за кадром
const isItLanding = 1;
if (isItLanding === undefined) {
alert('оппа');
}
}
type Methods<T extends string> = {
[_ in `get${T}s`]: API['_readMany'];
} & {
[_ in `create${T}`]: API['_create'];
} & {
[_ in `get${T}`]: API['_read'];
}
interface TAPI {
new <T extends string>(type: T): Methods<T> & {
[K in Exclude<keyof API, `_${string}`>]: API[K]
}
}
export default API as unknown as TAPI;
document.write оно скажется на скорости загрузки плачено. Но не проверял.)
<code></code>