typescript - 我怎样才能完成下面的任务?我必须从什么开始?
问题描述
我从同事那里得到了有趣的任务,但我从来没有处理过同样的事情。
因此,提供了以下字符串表达式: sum != 5 and ( status = "New"
or status = "Resolved"
)
我需要在 TypeScript 中实现一个函数,它接受字符串作为参数并返回一个类型的对象ConditionFilter<T>
,需要定义ConditionFilter<T>
类型和子类型。
我可以假设字符串可以被空格解析。
type ConditionFilter<T> = //TODO
function parseCondition(condition: string): ConditionalFilter<T>{
//TODO
}
我必须从什么开始?我应该读什么?我是初学者,请不要删我的帖子。
解决方案
我想你想要类似的东西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
推荐阅读
- python - 如何对 dask.dataframe 中的一行进行子集化?
- python-3.x - 是否可以运行一个 for 循环来绘制图形并在顶部生成一个目录,其中显示每个顶部的位置?
- hyperledger-fabric - 使用自定义超级账本结构网络“fabcar”调整超级账本卡尺
- c# - 获取参数的全名(命名空间、类、方法和名称)c#
- c++ - 如何在保持显示位数的同时向左移动小数点?
- python - Python 使用 __init__.py 从其他文件夹(在同一个项目中)导入文件?
- python - 使用 Quart/Flask 上传多个文件会添加文件对象以形成字节,而不会添加到文件中
- java - 如何将订餐代码转换为人类可以在 Java 中读取的统计信息?
- sql - EXECUTE IMMEDIATE SELECT INTO 语句中缺少关键字 - Oracle PL/SQL
- javascript - 如何在node js中设置不同的变量分配给不同的环境