小编k2s*_*n69的帖子

如何验证打字稿中“未知”类型参数的属性?

我确信这里有一些非常基本的东西,但我不太明白。这是我第一次深入研究该unknown类型,我使用它来验证用户配置文件。

我知道您必须基本上检查该未知类型的值才能获取打字稿以获取有关对象本身的越来越多的信息。这是我到目前为止所拥有的

function validateJsonOverride(override: unknown) {
  if (typeof override !== "object") {
    throw new Error("Property `overrides` must be an array of objects");
  }
  if (override == null) {
    throw new Error("Elements in `overrides` cannot be null or undefined");
  }
  
  if (!("a" in override)) {
    throw new Error("Property `a` is required for json overrides");
  }
  if (!("b" in override)) {
    throw new Error("Property `b` is required for json overrides");
  }
  const {a, b} = override;
  return {
    a,
    b, …
Run Code Online (Sandbox Code Playgroud)

typescript

6
推荐指数
1
解决办法
6294
查看次数

CSS 仅在元素之间固定大小边距

这个问题在某些项目中不断出现,我想看看是否有人有更好的解决方案。

本质上,我试图拥有一组 div 元素,其中所有元素之间的间距相等,但周围的间距不同。下面的代码片段是我正在寻找的示例,我希望有人可能有一个更干净的解决方案。

我的问题是是否有人有更好的解决方案,可以使用更少的 css 或更少的 HTML 元素。需要维护的重要事项:

  • 本地化兼容 - 由于我们不使用左或右边距,因此 rtl 中不存在任何奇怪的本地化问题
  • 对齐 - 如果不需要,它不应该调整到整个窗口的大小,但如果需要,它应该换行。(参见示例)
  • 间距 - 元素之间的间距应该是固定的

如果您有任何想法,我很想听听!

        body {
            background-color: black;
            padding: 30px;
        }
        .inner {
            overflow: hidden;
            margin: 20px 0px;
        }
        .innerMargin {
            background-color: white;
            display: flex;
            flex-direction: row;
            flex-wrap: wrap;
            margin: -10px;
        }
        .innerMargin > div {
            flex: 0 0 20px;

            background-color: red;
            margin: 10px;
            height: 20px;
            width: 20px;
        }
        .fixedWidth {
            width: 180px;
        }
Run Code Online (Sandbox Code Playgroud)
<div class="inner">
        <div class="innerMargin">
            <div></div>
            <div></div>
            <div></div>
            <div></div> …
Run Code Online (Sandbox Code Playgroud)

css flexbox

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

如何使UL按钮列表可访问?

在我的代码中,我有一个存储在无序列表中的按钮列表。如果启用了屏幕阅读器,并且选择了任何li元素,那么大多数阅读器将从列表中的多少个元素中读出您所使用的元素(例如,“列表项目1,项目2之4”)。

我很好奇的是,有可能将两者合并,以便您在按Tab时可以按到按钮上,但同时还可以通过屏幕阅读器读取列表项信息。

下面是我当前代码的示例代码(第一个),第二个仅用于说明屏幕阅读器显示2之4的声音。

      
Run Code Online (Sandbox Code Playgroud)
<div>
  This example shows that you tab straight to the button but don't get the list information
  <ul>
    <li><button onClick="alert('Button 1')">Button 1</button></li>
    <li><button onClick="alert('Button 2')">Button 2</button></li>
    <li><button onClick="alert('Button 3')">Button 3</button></li>
    <li><button onClick="alert('Button 4')">Button 4</button></li>
  </ul>
</div>
<div>
  This example shows that if you add tab index on a list item you get the count of items in the list
  <ul>
    <li tabindex="0"><button onClick="alert('Button 1')">Button 1</button></li>
    <li tabindex="0"><button onClick="alert('Button 2')">Button 2</button></li>
    <li tabindex="0"><button onClick="alert('Button 3')">Button 3</button></li> …
Run Code Online (Sandbox Code Playgroud)

html accessibility web-accessibility

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