小编Sam*_*Fen的帖子

您可以在Typescript函数中使用可选的分解结构参数吗?

我想编写一个函数,该函数接受一个对象参数,在函数签名中使用解构,并使该参数为可选:

myFunction({opt1, opt2}?: {opt1?: boolean, opt2?: boolean})
Run Code Online (Sandbox Code Playgroud)

但是,Typescript不允许我这样做(“绑定模式参数在实现签名中不能为可选。”)。

如果不进行破坏,我当然可以做到:

myFunction(options?: {opt1?: boolean, opt2?: boolean}) {
  const opt1 = options.opt1;
  const opt2 = options.opt1;
  ...
Run Code Online (Sandbox Code Playgroud)

看起来这些应该是同一回事,但是不允许使用最高示例。

我想使用一种经过分解的语法(1),因为它存在并且是一种不错的语法,上述两个函数的行为似乎自然而然,以及(2)因为我也希望有一种简洁的方法来指定默认值:

myFunction({opt1, opt2 = true}?: {opt1?: boolean, opt2?: boolean})
Run Code Online (Sandbox Code Playgroud)

在不进行解构的情况下,我必须将这些默认值埋在函数的实现中,或者使用一个实际上是带有构造函数的类的参数...

typescript

5
推荐指数
2
解决办法
1367
查看次数

加载我的应用程序后 Cypress 存根功能丢失

在我的主 React 应用程序的类中,componentDidMount我调用 api 方法来获取一些数据。我正在尝试测试我的应用程序在给定数据的情况下是否执行正确的操作。我没有尝试模拟服务器,也没有处理 Cypress 的半支持之fetch类的问题,而是尝试让cy.stub整个 API 函数只返回一个数据块。

// api.ts

export const fetchData = async (): Promise<IData> => {
  ...
}
Run Code Online (Sandbox Code Playgroud)
// app.tsx
import { fetchData } from "../api";

export class App extends React.PureComponent<IProps, IState> {

  async componentDidMount() {
     const data = await fetchData(); 
     // ...
  }
}
Run Code Online (Sandbox Code Playgroud)
// testData.test.ts

import * as Api from "../../src/api";

context("Test the app after loading mock data from the API", () => {

  describe("Calling the API",() => …
Run Code Online (Sandbox Code Playgroud)

reactjs cypress

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

从现有的JS Node上下文中编译Jade

我有兴趣使用Jade创建动态生成数据的静态HTML文件.我已经有一组JS脚本在Node中运行时创建我的数据.我希望能够做的是计算我的数据,然后使用我创建的那些JS对象编译我的HTML页面.

例如

var myArry = MyLib.calculateSomeArray();
var myObj = MyLib.createSomeObj();
jade.compile(myTemplate);
Run Code Online (Sandbox Code Playgroud)

玉模板:

each item in myArry
  li= item
each val, key in myObj
  li #{key}: #{val}
Run Code Online (Sandbox Code Playgroud)

我假设这是其中一个很明显,我在文档中遗漏它的情况之一,但我没有看到它,我看到的最接近的答案似乎涉及Express,这似乎应该是没必要.

templates node.js pug

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

在CoffeeScript中进行列表/对象搜索

我正试图尽可能高效地使用CoffeeScript理解.我认为我有一个基本的映射 - 将一个列表转换为另一个列表 - 但搜索仍然看起来很冗长.

说我有商店的商品地图:

shopMap:
  toyStore: ["games", "puzzles"]
  bookStore: ["novels", "picture books"]
Run Code Online (Sandbox Code Playgroud)

并且,如果有一个项目,我想知道它在哪个商店.在CoffeeScript中这样做的最佳方式是什么?

这是我在JavaScript中可以做的:

var shop = findShop(item);

function findShop(item) {
   for (shop in shopMap)
      itemList = shopMap[shop]
      for (i = 0, ii = itemList.length; i<ii; i++) {
         if (itemList[i] === item) {
            return shop;
         }
      }
  }
}
Run Code Online (Sandbox Code Playgroud)

我使用了一个函数来允许它使用return语句快速中断循环,而不是使用中断,但函数有点难看,因为它只被使用一次.

那么是否有一个较短的CS等效,最好不需要创建新函数?

list-comprehension coffeescript

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

有没有办法判断Safari是否为全屏显示?(例如document.fullscreenElement)

我正在尝试使用Javascript查找Safari是否处于全屏模式。Chrome和Mozilla都使用供应商前缀的document.fullscreenElement版本:

isFullscreen = function() {
  return document.fullscreenElement
      || document.webkitFullscreenElement
      || document.mozFullScreenElement;
}
Run Code Online (Sandbox Code Playgroud)

但是,这在Safari 5.1.7上不起作用-文档上没有“ webkitFullscreenElement”或类似属性。

有人知道是否有办法判断Safari是否处于全屏模式吗?

safari html5 fullscreen

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