相关疑难解决方法(0)

获取通用参数的类型

我写了一个小函数,以便更好地处理类型.

function evaluate(variable: any, type: string): any {
    switch (type)
    {
        case 'string': return String(variable);
        case 'number': return isNumber(variable) ? Number(variable) : -1;
        case 'boolean': {
            if (typeof variable === 'boolean')
                return variable;

            if (typeof variable === 'string')
                return (<string>variable).toLowerCase() === 'true';

            if (typeof variable === 'number')
                return variable !== 0;

            return false;
        }
        default: return null;
    }
}

function isNumber(n: any): boolean {
    return !isNaN(parseFloat(n)) && isFinite(n);
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用泛型,但不知道如何从泛型参数获取类型.这是可能的?

generics types typescript

11
推荐指数
2
解决办法
2万
查看次数

替换通用接口类型参数

我正在尝试为函子映射创建一个通用的函数接口,该接口尊重所提供的接口。在下面显示的代码中,我希望value mb的类型Maybe<number>为type ,而不是实际的type Functor<number>

我确实意识到,一种可能的解决方案是向接口添加重载FMap。我对此解决方案不满意的原因是,我希望将此代码驻留在一个程序包中,从而允许用户创建实现Functor并具有我在使用函数时所描述的行为map

interface Functor<A> {
  map<B>(fn: (a: A) => B): Functor<B>;
}

interface FMap {
  <A, B>(fn: (a: A) => B, Fa: Functor<A>): Functor<B>;
}

const map: FMap = (fn, Fa) => (
  Fa.map(fn)
);

class Maybe<A> implements Functor<A> {
  constructor(private readonly a: A) {}
  map<B>(fn: (a: A) => B): Maybe<B> {
    return new Maybe<B>(fn(this.a));
  }
}


const sqr = (x: number) => x*x;
const ma = …
Run Code Online (Sandbox Code Playgroud)

typescript typescript-generics

5
推荐指数
1
解决办法
134
查看次数

标签 统计

typescript ×2

generics ×1

types ×1

typescript-generics ×1