小编And*_*Ooi的帖子

打字稿 - 如何使用嵌套映射类型

我得到了一个无法修改的大型复杂接口 X,我想根据我想用作函数参数类型的接口 X 中的属性和子属性定义一些较小的类型。我还想避免单独重新声明 X 中已经存在的内容。

interface X {
  a:number;
  c:{
    aa:number;
    cc:{
      aaa:string;
    }
  },
  d?:{
    aa:number;
    cc:{
      aaa:string;
    }
  },
  e:{
    aa:number;
    cc:{
      aaa:string;
    }
  }[]
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用映射类型来访问子类型 [编辑注意:子类型是错误的术语,这应该称为嵌套级别类型,请参阅下面的答案] 这应该是对象的,例如:

type C = X["c"]; // { aa:number; cc:{ aaa:string } } 

type C_CC = X["c"]["cc"]; // { aaa: string }

type D = X["d"]; // { aa:number; cc:{ aaa:string } } | undefined

Run Code Online (Sandbox Code Playgroud)

但是,当属性可能未定义时,事情就变得有点麻烦了。如果我想获得 Xdcc 的类型...(应该给 {aaa:string} )我该怎么做?或者甚至有可能吗?

以下两次尝试给出错误:

type D_CC1 = X["d"]["cc"];  // …
Run Code Online (Sandbox Code Playgroud)

typescript

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

使用 ajv 验证 UTC 日期/日期时间,但允许空字符串

我需要验证字符串架构 format:"date"或 format:"date-time"以仅接受ISO 8601但也允许空字符串 "" (应使用所需的架构单独检查 "" 要求)。

{
   "datetime1": {
      "type": "string",
      "format": "date-time",
   }
}
Run Code Online (Sandbox Code Playgroud)

但是,本机 ajv 格式解析器不允许传递空字符串“”。如何使其允许空字符串,并仍然验证 ISO 8601?

我真的必须使用编写自己的格式检查器吗ajv.addFormat()?我也有同样的问题"format": "email",我还需要“”才有效。

注意:我无法修改架构,因此无法添加默认值。

javascript ajv

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

MUI 自动完成(多个)控制值 - 神秘的输入行为

我正在尝试编写代码以在键盘输入时异步搜索多选组合。

然而我在最新版本(5.2.2)中发现了一个我无法解释的奇怪行为。我提炼出以下问题(基于 MUI 自动完成页面的示例):

import * as React from "react";
import TextField from "@mui/material/TextField";
import Autocomplete from "@mui/material/Autocomplete";

const options = [
  { label: "Option 1", value: 1 },
  { label: "Option 2", value: 2 }
];

export default function ControllableStates() {
  // const [value, setValue] = React.useState<any | null>([]);
  const value = [];
  const [inputValue, setInputValue] = React.useState("");

  console.log("Current Value:", value);

  return (
    <div>
      <div>{`value: ${value !== null ? `'${value}'` : "null"}`}</div>
      <div>{`inputValue: '${inputValue}'`}</div>
      <br />
      <Autocomplete
        multiple={true}
        value={value} …
Run Code Online (Sandbox Code Playgroud)

reactjs material-ui

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

标签 统计

ajv ×1

javascript ×1

material-ui ×1

reactjs ×1

typescript ×1