热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

打字稿:条件类型不起作用

我正在开发graphql模式化程序,由于下一个条件类型不起作用,我无法继续

我正在开发graphql模式化程序,由于下一个条件类型不起作用,我无法继续

type VarType = 'Boolean' | 'Float' | 'Id' | 'Int' | 'String';
type TypeValue =
Type extends 'Boolean' ? boolean :
Type extends ('Float' | 'Int') ? number :
Type extends ('Id' | 'String') ? string :
never
;
type TypeValueDeclaration = Type extends [VarType]
? Array>
: TypeValue // Type 'Type' does not satisfy the constraint
;

我该如何使类型为TypeValueDeclaration


它将像这样使用

interface FieldInfo {
type: Type,resolver: () => TypeValueDeclaration;
}
function addInfo(info: FieldInfo) {
console.log(info);
}
addInfo({
type: 'Int',resolver: () => 3.14,});
addInfo({
type: 'Int',resolver: () => '10',// compilation error :+1
});
addInfo({
type: ['Int'],resolver: () => [1,2,3],});
addInfo({
type: ['Int'],resolver: () => ['lol'],// compilation error :+1
});


您可以通过阐明每种可能性来解决条件类型中的编译错误:

type TypeValueDeclaration = Type extends [VarType]
? Array>
: Type extends VarType ? TypeValue : never
;

您可能会认为编译器应该了解Type extends VarType那时必须为true,但必须为unfortunately it does not,at least for now。


还要注意,从字符串文字到类型的映射时不必使用条件类型,因为普通对象类型可以做到这一点:

type TypeValue = {
Boolean: boolean,Float: number,Int: number,Id: string,String: string
}[Type];

但这取决于您。


哦,希望能有所帮助;祝你好运!

Link to code


推荐阅读
  • java 表达式解析引擎_Aviator 轻量 Java 表达式引擎
    Aviator是一个轻量级、高性能的Java表达式执行引擎,它动态地将表达式编译成字节码并运行。使用com.googlecode.aviatoraviator{ver ... [详细]
  • Github上73个超棒且可提高生产力的 NPM 包,高赞!
    来自:掘金,作者:火狼1https:juejin.impost6854573212890562573前言JS是前端的核心,但 ... [详细]
  • Python基础知识:注释、输出和input交互
    本文介绍了Python基础知识,包括注释的使用、输出函数print的用法以及input函数的交互功能。其中涉及到字符串和整数的类型转换等内容。 ... [详细]
  • 1.安装cordovapluginaddcordova-plugin-file-transfercordovapluginaddcordova-plugin-fi ... [详细]
  • PIMPL 是 C++ 中的一个编程技巧,意思为指向实现的指针。具体操作是把类的实现细节放到一个单独的类中,并用一个指针进行访问 ... [详细]
  • 在这一期的SendMessage函数应用中,我将向大家介绍如何利用消息函数来扩展树型列表(TreeView)控件的功能相信对于树型列表控件大家十分的熟悉, ... [详细]
  • IDEA实用插件Lombok
    LombokLombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。通常,我们所定义的对象和b ... [详细]
  • Sets和数组一样,都是一些有序值的的集合,但是Sets和数组又有所不同,首先Sets集合中不能存有相同的值,如果你向Set ... [详细]
  • log4cpp概述与使用实例一、log4cpp概述Log4cpp是一个开源的C类库,它提供了C程序中使用日志和跟踪调试的功能,它的优点如下࿱ ... [详细]
  • 微信小程序中如何获取当前位置经纬度以及地图显示
    小编给大家分享一下微信小程序中如何获取当前位置经纬度以及地图显示,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • 本文介绍了在满足特定条件时如何在输入字段中使用默认值的方法和相应的代码。当输入字段填充100或更多的金额时,使用50作为默认值;当输入字段填充有-20或更多(负数)时,使用-10作为默认值。文章还提供了相关的JavaScript和Jquery代码,用于动态地根据条件使用默认值。 ... [详细]
  • 获取时间的函数js代码,js获取时区代码
    本文目录一览:1、js获取服务器时间(动态)2 ... [详细]
  • [USACO 2006 November Gold] 玉米地Corn Fields
    题目描述  FarmerJohn新买了一块长方形的牧场,这块牧场被划分成M行N列(1<M<12;1<N<12),每一格都是一块正方形的土地。FJ打 ... [详细]
  • Vue生产环境调试的方法步骤
    开发环境下Vue会提供很多警告来帮你对付常见的错误与陷阱,而在生产环境下,这些警告语句却没有用,反而会增加应用的体积,下面这篇文章主要给大家介绍了关于Vue生产环境调试的方法步骤, ... [详细]
author-avatar
m71051588
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有