Tüm JavaScript `typeof` dönüş değerlerinin TypeScript tipi


Bir tür şablon motoruna benzeyen bir TypeScript sistemi için, bir giriş akışındaki gömülü türsüz JavaScript'teki fonksiyon parametrelerini doğrulamak üzere bir fonksiyon üzerinde çalışıyorum.

const javaScriptType = (untyped: unknown) => typeof untyped;
type JavaScriptType = ReturnType<typeof javaScriptType>;

Böylece JavaScriptType şu şekilde olur:

type JavaScriptType = "string" | "number"
    | "bigint" | "boolean" | "symbol"
    | "undefined" | "object" | "function";

Ama, benim yöntemimi kullanarak, yalnızca ReturnType'i kullanarak istediğim sonuçları elde edebilmem için var olan 'faydasız' javaScriptType fonksiyonuyla karşılaşıyorum.

Bu işi bir fonksiyonu "boşa harcamadan" yapmamın daha kolay bir yolu var mı?

Basit cevap, beklenen değerleri sabit kodlamak olurdu... JavaScript'in typeof operatörünün yakında değişecek gibi bir durumu yok... ama sabit kodlanmış değerler bir şekilde 'kirli' hissettiriyor.

Sadece netleştirmek için, bu tip şöyle bir şey için kullanılacak:

const failedTypes = (
    parameters: Array<unknown>, allowedTypes: Array<JavaScriptType> 
): => {
    const failed: Array<string> = [];
    for (const [index, parameter] of parameters.entries()) {
        const typeOf = typeof parameter;
        if (!allowedTypes.includes(typeOf)) {
            failed.push(`${index}: ${typeOf}`);
        }
    }
    return failed;
};