小编Mat*_*ley的帖子

打字稿中的记录类型是什么?

Record<K, T>打字稿中的含义是什么意思?

Typescript 2.1引入了Record类型,在一个例子中描述它:

// For every properties K of type T, transform it to U
function mapObject<K extends string, T, U>(obj: Record<K, T>, f: (x: T) => U): Record<K, U>
Run Code Online (Sandbox Code Playgroud)

Typescript 2.1

先进的各类网页提到Record下的映射类型标题旁边Readonly,PartialPick,这似乎是它的定义:

type Record<K extends string, T> = {
    [P in K]: T;
}
Run Code Online (Sandbox Code Playgroud)

Readonly,Partial和Pick是同态的,而Record不是.Record不是同态的一个线索是它不需要输入类型来复制属性:

type ThreeStringProps = Record<'prop1' | 'prop2' | 'prop3', string>
Run Code Online (Sandbox Code Playgroud)

就是这样.除了上述报价,没有其他提Recordtypescriptlang.org.

问题

  1. 有人可以给出一个简单的定义Record吗?

  2. 是 …

typescript typescript2.0

117
推荐指数
3
解决办法
3万
查看次数

Chrome会在HTTP 302重定向时取消CORS XHR

看起来根据 CORS规范,GET和POST请求应该透明地遵循302重定向.但Chrome正在取消我的请求.

这是执行请求的JS:

var r = new XMLHttpRequest();
r.open('GET', 'https://dev.mysite.com/rest', true);
r.send();
Run Code Online (Sandbox Code Playgroud)

这是应该发生的事情:

  1. 客户:XHR POST请求/休息
  2. 服务器:使用HTTP 302重定向到/ rest /进行响应
  3. 客户:遵循该重定向

但在第2步之后,Chrome会取消该请求.如果没有HTTP 302,请求将完美地运行.我已经证实了这一点.

当请求运行时,我可以在Chrome的"网络"面板中看到只有一个XHR - 取消的POST请求,没有响应标头或响应正文.

使用Chrome的net-internals工具进行调试,我看到服务器发送了响应,之后,请求被取消了.以下是请求的输出:

79295: URL_REQUEST
https://dev.mysite.com/rest
Start Time: 2013-08-30 12:41:11.637

t=1377880871637 [st=    0] +REQUEST_ALIVE  [dt=13455]
t=1377880871638 [st=    1]    URL_REQUEST_BLOCKED_ON_DELEGATE  [dt=1]
                              --> delegate = "extension Adblock Plus"
t=1377880871639 [st=    2]   +URL_REQUEST_START_JOB  [dt=13453]
                              --> load_flags = 143540480 (DO_NOT_SAVE_COOKIES | DO_NOT_SEND_AUTH_DATA | DO_NOT_SEND_COOKIES | ENABLE_LOAD_TIMING | MAYBE_USER_GESTURE | REPORT_RAW_HEADERS | VERIFY_EV_CERT)
                              --> method = "POST"
                              --> priority = 2 …
Run Code Online (Sandbox Code Playgroud)

redirect google-chrome xmlhttprequest .net-internals cors

44
推荐指数
3
解决办法
6万
查看次数

错误:缓存未配置。当我将 Font Awesome 安装到我的 React 应用程序时 Babel 的插件

我想在我的 React 应用程序中使用 Font Awesome,但是当我安装Font Awesome的 npm 时,出现以下错误:

Error: Caching was left unconfigured. Babel's plugins, presets, and .babelrc.js files can be configured
  for various types of caching, using the first param of their handler functions:
  module.exports = function(api) {
    // The API exposes the following:
    // Cache the returned value forever and don't call this function again.
    api.cache(true);
    // Don't cache at all. Not recommended because it will be very slow.
    api.cache(false);
    // Cached based on the value …
Run Code Online (Sandbox Code Playgroud)

javascript font-awesome reactjs babeljs

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

勒纳。安装依赖到根项目

我有这样的标准Lerna存储库:

my-repo
 - package.json
 - packages
   - api
     - package.json
   - web-app 
     - package.json
Run Code Online (Sandbox Code Playgroud)

如果我在两个包中都需要相同的依赖项(例如lodash),那么教程中的人建议将它安装到两个子模块中,然后使用lerna bootstrap --hoist标志引导项目。

由于--hoist标志lodash依赖将仅加载到根级别,node_modules但两个子模块都将其作为依赖包含在适当的位置package.json

但是 Node 的包解析算法会在文件树中搜索文件node_modules夹。

所以我的问题是为什么我不能只将公共依赖项安装到根级项目?然后lodash将位于 root 的node_modules. 并且子模块(包)会找到它,因为 Node 会node_module一直搜索直到到达文件系统的根目录。

至少它会帮助我避免使用 uncommon lerna bootstrap --hoist,并且lodash依赖项只会在顶层出现一次package.json(而不是两次:在package.json两个子模块中)

node.js lerna monorepo

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

在 Preact 和 typescript 中使用 web 组件

我在Preact 中使用自定义元素又名 web 组件。问题是 Typescript 抱怨元素没有被定义在- 在这种情况下是一个元素:JSX.IntrinsicElementscheck-box

<div className={styles.option}>
    <check-box checked={this.prefersDarkTheme} ref={this.svgOptions.darkTheme}/>
    <p>Dark theme</p>
</div>
Run Code Online (Sandbox Code Playgroud)

错误信息(省略路径):

ERROR in MyComponent.tsx
[tsl] ERROR in MyComponent.tsx(50,29)
      TS2339: Property 'check-box' does not exist on type 'JSX.IntrinsicElements'.

Run Code Online (Sandbox Code Playgroud)

我遇到了以下可能的解决方案,但不幸的是无法正常工作:

  1. /sf/answers/4021468951/ - 这是一个与问题无关的答案,但它涵盖了我的问题

我尝试将以下内容添加到我的typings.d.ts文件中:

ERROR in MyComponent.tsx
[tsl] ERROR in MyComponent.tsx(50,29)
      TS2339: Property 'check-box' does not exist on type 'JSX.IntrinsicElements'.

Run Code Online (Sandbox Code Playgroud)

我的 IDE 使导入部分变灰,IntrinsicElements这意味着它没有被使用 (?!) 并且无论如何它都不起作用。我仍然收到相同的错误消息。

  1. /sf/answers/3879734491/ - 同样为了反应,我试图将它“转换”为 preact,我得到了与 1 相同的结果。

我什至在squoosh项目中找到了一个由 google 维护的文件 …

web-component typescript custom-element preact

9
推荐指数
3
解决办法
3551
查看次数

如何导入jsonwebtoken验证抛出的TokenExpiredError?

我想检查 an 的类型是否ErrorTokenExpiredError由使用 Typescript 的库jwt.verify函数抛出的,例如jsonwebtokeninstanceof

import jwt from "jsonwebtoken";

function someFunction() {
    try {
        return jwt.verify(token, key);
    }catch(err) {
        if(err instanceof TokenExpiredError) {
            return attemptRenewal()
        }
        throw err
    }
}
Run Code Online (Sandbox Code Playgroud)

如何导入符号TokenExpiredError

我没有找到任何关于这个重要课程的文档,也是我想到的唯一直观的文档

import { jwt, TokenExpiredError } from "jsonwebtoken";
Run Code Online (Sandbox Code Playgroud)

原因jwtundefined.

我知道解决方法,例如与类名执行字符串比较,但我想生成干净的代码。

我正在使用jsonwebtoken8.5.1。

javascript jwt typescript

6
推荐指数
2
解决办法
6679
查看次数

typescript 编译器的默认 lib 值是多少?

文档说默认--lib源自--target

注意:如果未指定 --lib ,则会注入默认的库列表。注入的默认库是:

  • 对于 --target ES5:DOM、ES5、ScriptHost
  • 对于 --target ES6:DOM、ES6、DOM.Iterable、ScriptHost

同一文档说默认--target值是ES3

指定 ECMAScript 目标版本:

  • “ES3”(默认)
  • “ES5”
  • “ES6”/“ES2015”
  • “ES2016”
  • “ES2017”
  • “ES2018”
  • “ES2019”
  • “ES2020”
  • “ES下一个”

那么...当既没有设置也没有设置--lib时默认值是多少?--lib--target

typescript tsc

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

禁止使用 `function.name` 和 `constructor.name` 的 Eslint 规则?

是否存在禁止使用name函数属性的 eslint 规则?

当您缩小代码时,它通常会破坏函数的名称。所以在开发中,myFunc.name会是这样'myFunc',但在生产中会是这样的'a'。这是一把开发枪,我想阻止这种情况发生。

eslint-plugin-ban仅适用于调用表达式,但我想要一些适用于访问属性(MemberExpression)的东西。

eslint

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

如何自定义Wordpress comment_form();

我目前正在开发自己的Wordpress主题,最近一直致力于定制comments_template();.我已经读过,使用该wp_list_comments();方法是拉入并显示每页/帖子的评论的最佳实践.我已经成功地定制了通过该方法提取注释并显示的方式.

我还读到使用该comment_form();方法是显示评论表单的最佳实践.但是,我真的在努力尝试定制这个.$ args,过滤器操作之间我有点困惑.

基本上我想彻底改变评论表格的部分内容.如何在仍然使用该comment_form();方法的最佳实践的同时更改注释表单的某些部分?

我真正需要做的就是包装几个现有的<p>标签<divs>.我想要做的更新列表如下:

  1. <h3>标题调整为<h2 class="comments-header">Tell us about you!</h2>
  2. 换行表单字段 <fieldset></fieldset>
  3. <label><div class="label"></div>
  4. <input><div class="field"></div>
  5. 使<p class="form-allowed-tags"></p>显示之前的评论<textarea>,而不是之后
  6. 更改表单提交按钮以使用<button>元素而不是<input>

请参阅以下代码以获得进一步说明......

默认comment_form(); 输出的代码:

<div id="respond">
    <h3 id="reply-title">Leave a Reply</h3>
    <form action="http://localhost/.../wp-comments-post.php" method="post" id="commentform">
        <p class="comment-notes">
            Your email address will not be published. Required fields are …
Run Code Online (Sandbox Code Playgroud)

html php wordpress comments wordpress-theming

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

在此上下文中不允许使用 Gitlab CI YML 映射值

我想使用 Gitlab CI 在 master 提交时将我的静态网站部署到 ftp 服务器。我没有 DevOps 经验,并尝试通过互联网上的教程来做到这一点。我制作了这个 .gitlab-ci.yml 文件

deploy:
    stage: deploy
    only:
        - master
        deploy:
  script:
    - apt-get update -qq && apt-get install -y -qq lftp
    - lftp -u ftp-login,ftp-pass ftp.server \
           -e "mirror -e -R -x .git -x excl.txt -x exclude-1 -x exclude-2 -x README.md -p ./ mysite/www/ ; quit"
Run Code Online (Sandbox Code Playgroud)

但是 gitlab 向我显示这个 yml 文件的错误。它表示在此上下文中不允许映射值。你能帮我处理这个文件吗?谢谢!

continuous-integration yaml continuous-deployment gitlab gitlab-ci

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