小编Jos*_*ang的帖子

Typescript:类型“{}”不可分配给类型“Pick<T, K>”,如何正确键入 javascript `pick` 函数?

我想输入一个名为 的函数pick,我知道 typescript 内置了Pick<T, K>,现在我想实现实际的源代码使用部分,但我被卡住了。

这个函数的作用是根据给定的字符串pick提供providedobject的属性并返回new object

用法是这样的:

const data = { name: 'Jason', age: 18, isMember: true };
const pickedData = pick(data, ['name', 'isMember']);

console.log(pickedData)
// => { name: 'Jason', isMember: true } 
Run Code Online (Sandbox Code Playgroud)

我的pick函数的 javascript 实现without typescript是这样的:

function pick(obj, properties) {
  let result = {}

  properties.forEach(property => {
    result[property] = obj[property];
  });

  return result;
}
Run Code Online (Sandbox Code Playgroud)

这是typescript版本,但未编译:

const data = { name: 'Jason', age: …
Run Code Online (Sandbox Code Playgroud)

javascript generics types typescript

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

Typescript:排除&lt;T, K&gt; 不排除我的类型

我构建了一个名为 的函数compact,该函数的作用是删除数组中的所有假值。

这是以下javascript的实现compact

function compact(arr) {
  return arr.filter(Boolean);
}

const MyData = [0, 1, null, 2, undefined, ''];

console.log(compact(MyData))
// => [1, 2]
Run Code Online (Sandbox Code Playgroud)

这是以下的Typescript 打字部分compact

function compact(arr) {
  return arr.filter(Boolean);
}

const MyData = [0, 1, null, 2, undefined, ''];

console.log(compact(MyData))
// => [1, 2]
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

现在,奇怪的部分来了,当我将它与代码连接起来时compact,它实际上不起作用:

type Falsy = false | null | 0 | '' | undefined;

type Compact<T extends any[]> = Exclude<T[number], Falsy>;

// some correct …
Run Code Online (Sandbox Code Playgroud)

generics typescript

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

如何在 JavaScript 中执行数组解构,然后同时检索解构对象的值?

请参阅此最小示例

const [one, two, three] = [
  { name: "Joseph" },
  { name: "Amy" },
  { name: "Jim" }
];
Run Code Online (Sandbox Code Playgroud)

我可以对第一级进行数组解构,如何像这样使用第二级进行解构:

const [oneName: one.name, twoName: two.name, threeName: three.name] = [
  { name: "Joseph" },
  { name: "Amy" },
  { name: "Jim" }
];
Run Code Online (Sandbox Code Playgroud)

这是伪代码,语法错误,但您明白了。

是否可以在 JavaScript 中执行此操作?

javascript ecmascript-6

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

如何告诉 Vuelidate 的验证器接受“alphaNum”加字符点(“.”)?

我有一个输入字段,我可以告诉Vuelidate它只接受alphaNumRequired像这样:

import { required, alphaNum } from "vuelidate/lib/validators";

export default {
  data() {
    return {
      myInputValue: ""
    };
  },
  validations: {
    myInputValue: {
      required,
      alphaNum
    }
  }
};

Run Code Online (Sandbox Code Playgroud)

我的问题来了,我怎样才能myInputValue接受一个额外的字符点(.)?

哪个会完全接受这些东西

  1. abcdefghijklmnopqrstuvwxyz
  2. ABCDEFGHIJKLMNOPQRSTUVWXYZ
  3. 0123456789
  4. .

我怎样才能做到这一点?

javascript vue.js vuelidate

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

是否可以在不使用 innerHTML 的情况下将 &lt;a&gt; 标记替换为字符串中的 href 链接?

我有一个看起来像这样的 JavaScript 字符串

const link = `
  Checkout My Cheat Sheet:

  <a target="_blank" href="https://tailwindcomponents.com/cheatsheet/"/>

  It's awesome
`;
Run Code Online (Sandbox Code Playgroud)

我想把上面的文字转换成这个

const link = `
  Checkout My Cheat Sheet:

  https://tailwindcomponents.com/cheatsheet/

  It's awesome
`;
Run Code Online (Sandbox Code Playgroud)

虽然我可以使用innerHTML,但我的文本可能包含其他脚本标签,这可能会导致XSS。

现在更换<a>标签对我来说就足够了。

有没有可能的字符串解决方案?

javascript

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

TypeScript,我不能省略&lt;someUnion,oneInterface&gt;。为什么?

请查看以下最小示例:

interface A {
  a: number;
}
interface B {
  b: number;
}
interface C {
  c: number;
}

type ABC = A | B | C;

type omitA = Omit<ABC, A>;

Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我不能省略接口,但是,省略字符串属性可以正常工作。

如何排除该界面?

typescript

0
推荐指数
1
解决办法
22
查看次数