小编Thi*_*mma的帖子

为什么在 TypeScript 中实现接口时需要重新定义属性?

我正在研究类和接口。我有一件事情让我很恼火,这是我第一次处理这类事情,所以请耐心等待。

假设我有这个界面:

// IFoo.d.ts
export default interface IFoo {
  foo: string;
  bar: number;
}
Run Code Online (Sandbox Code Playgroud)

当我在课堂上实现它时,我会执行以下操作:

// FooModel.ts
import IFoo from './IFoo';

export default class FooModel implements IFoo {
  foo: string;
  bar: number;

  constructor({ foo, bar }: IFoo = { foo: 'hello', bar: 1 }) {
    this.foo = foo;
  }
}
Run Code Online (Sandbox Code Playgroud)

为什么我必须再次实现相同的属性?

这与复制粘贴基本相同,但有严格的约定。另外,我必须分别键入foo6bar次,才能根据接口正确分配默认可选值。

还有更有效的方法来做到这一点吗?

编辑; 我正在努力实现以下目标:

具有属性的类,其中的属性可用于打字稿的检查,如下所示: 接口

export default interface FooDTO {
  foo: string;
  bar: number;
}
Run Code Online (Sandbox Code Playgroud)

模型

export interface IFoo {
  foo: string;
  bar: …
Run Code Online (Sandbox Code Playgroud)

class implements typescript

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

为什么 VsCode git 中有两个源代码控制?

我在做一个项目时注意到一些奇怪的事情:

我删除了 git 文件夹以重新开始,如下所示:rm -rf .git

然后我添加了遥控器:git remote add origin <url>

现在 VSCode 向我展示了这一点:

源代码控制图像

为什么我有顶级源代码控制(p2000-raspberry),即使我创建了一个新的 git 项目,我该如何删除它?请帮帮我,我只想要p2000 接收器

git visual-studio-code

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

在 useEffect 中使用 useState 值而不进行状态更新 useEffect

我正在研究一个基于对象键管理字符串数组的函数。假设它看起来像这样:

import React, { useState, useEffect } from "react";
import FieldContext from "../contexts/FieldContext";
import io from "socket.io-client";

const [socket, setSocket] = useState(null);
// the `data` array gets changed every second due to a WebSocket, in case that's important
const [data, setData] = useState({ foo: [], bar: [] });
const [connections, setConnections] = useState(["conn1", "conn2"]);

const { checkedFields } = useContext(FieldContext); // ["foo", "moo"];

useEffect(() => {
  setConnections(prevConnections => {
    // The code below does the following: 
    // Loop through the …
Run Code Online (Sandbox Code Playgroud)

reactjs react-hooks use-effect use-state

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

如何在 ethers.js ABI 中定义结构数组返回类型

目前我得到了这个 abi:

const stakingAbi = [
    'function getStakes(address user) external view returns (Stake[] memory)',
    'function stake7Days(uint128 _amount) external whenNotPaused',
    'function stake14Days(uint128 _amount) external whenNotPaused',
    'function stake30Days(uint128 _amount) external whenNotPaused',
    'function stake90Days(uint128 _amount) external whenNotPaused'
]
Run Code Online (Sandbox Code Playgroud)

Stake结构如下所示:

struct Stake {
    uint16 bonusPercentage;
    uint40 unlockTimestamp;
    uint128 amount;
    bool withdrawn;
}
Run Code Online (Sandbox Code Playgroud)

目前 getStakes 函数不起作用,因为 Ethers 不知道它Stake[]是什么,我如何在 ABI 中定义它?

decentralized-applications ethers.js

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

Xcode 和 Unity 缺少库“lGoogleUtilities”

我正在开发一个用 Unity 制作的应用程序,我必须在 Xcode 中构建它才能在应用程序商店中获取它。

现在我在这里遇到了问题。我收到此错误:

library not found for -lGoogleUtilities
Run Code Online (Sandbox Code Playgroud)

然而,当我在调试模式下构建应用程序并在我的 iPad 上测试它时,没有任何问题。但是当我尝试为 TestFlight(工具栏 -> 产品 -> 存档)构建它时,会发生该错误。

我已经按照本教程使其在调试模式下工作(因为我之前也有该错误) https://youtu.be/YHHj1bZUbsc(从 6:20 开始)。

我正在为 Unity 使用“Google Admob”、“CloudOnce”和“Play Services Resolver”插件。在调试版本中,错误(在我在调试版本中修复它之前)是由“Google Admob”引起的。我觉得我在发布版本中缺少框架或某些东西。

xcode unity-game-engine admob ios

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

如何使用 Lodash 将项目添加到数组的开头?

我一直在寻找使用 lodash 将项目添加到数组开头的方法。不幸的是,除了 lodash concat (to the end of the array)之外,我似乎找不到其他任何东西。文档似乎也没有提及任何相关内容。

我得到以下代码:

const [collection, setCollection] = useState({
  foo: [1, 2, 3]
});

const addToCollection = (key, items) => {
  setCollection(prevCollection => ({
   ...prevCollection,
   [key]: _.concat(prevCollection[key] || [], items)
  }));
};
Run Code Online (Sandbox Code Playgroud)

但这会将所有项目连接到最后。我不想每次都对它们进行排序,因为这会使用不必要的处理能力,我宁愿将它们添加到开头,因为 API 总是推送已经排序的项目

我将如何实现这一点:

addToCollection('foo', [4, 5, 6]);
console.log(collection['foo']) // [4, 5, 6, 1, 2, 3];
Run Code Online (Sandbox Code Playgroud)

而不是现在发生的事情:

addToCollection('foo', [4, 5, 6]);
console.log(collection['foo']) // [1, 2, 3, 4, 5, 6];
Run Code Online (Sandbox Code Playgroud)

javascript lodash

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