首页 > 解决方案 > 我怎样才能完成下面的任务?我必须从什么开始?

问题描述

我从同事那里得到了有趣的任务,但我从来没有处理过同样的事情。

因此,提供了以下字符串表达式: sum != 5 and ( status = "New"or status = "Resolved")

我需要在 TypeScript 中实现一个函数,它接受字符串作为参数并返回一个类型的对象ConditionFilter<T>,需要定义ConditionFilter<T>类型和子类型。

我可以假设字符串可以被空格解析。

type ConditionFilter<T> = //TODO

function parseCondition(condition: string): ConditionalFilter<T>{
  //TODO
}

我必须从什么开始?我应该读什么?我是初学者,请不要删我的帖子。

标签: typescript

解决方案


我想你想要类似的东西predicate。您可以发送 lambda 表达式而不是字符串(将表达式设为字符串不是一个好主意)。

所以你可以delegate像这样在 Typescript 中定义类型:

type Predicate<T> = (item: T) => boolean;

function parseCondition1<T>(predicate: Predicate<T>, item:T): boolean {
  if(predicate(item))
      return true;
  else
     return false;
}

let string = "test";
console.log(parseCondition1<string>(t=>t == "test", "string"));//false;

let sum = 5;
console.log(parseCondition1<number>(t=>t != sum, 5));//false

enum MYstatus {
    New,
    Resolved
}

let state:MYstatus = MYstatus.New

console.log(parseCondition1<MYstatus>(t=>t == MYstatus.New, state));//true

PlaygroundLink


推荐阅读