我想输入一个名为 的函数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) 我构建了一个名为 的函数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) 请参阅此最小示例
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 中执行此操作?
我有一个输入字段,我可以告诉Vuelidate它只接受alphaNum并Required像这样:
import { required, alphaNum } from "vuelidate/lib/validators";
export default {
data() {
return {
myInputValue: ""
};
},
validations: {
myInputValue: {
required,
alphaNum
}
}
};
Run Code Online (Sandbox Code Playgroud)
我的问题来了,我怎样才能myInputValue接受一个额外的字符点(.)?
哪个会完全接受这些东西
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.我怎样才能做到这一点?
我有一个看起来像这样的 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>标签对我来说就足够了。
有没有可能的字符串解决方案?
请查看以下最小示例:
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)
我不能省略接口,但是,省略字符串属性可以正常工作。
如何排除该界面?