相关疑难解决方法(0)

类型断言与TypeScript中较新的`as`运算符之间有什么区别?

TypeScript规范调用类型断言之间有什么区别:

var circle = <Circle> createShape("circle");
Run Code Online (Sandbox Code Playgroud)

较新的 as运营商:

var circle = createShape("circle") as Circle;
Run Code Online (Sandbox Code Playgroud)

这两者通常用于编译时转换?

casting typescript

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

如何在TypeScript中声明只读数组元组?

我们可以在TypeScript中声明一个类型化的元组,例如,使用类型注释[string, number].这意味着一个包含2个元素的数组,其中第一个元素需要是一个字符串,第二个元素需要一个数字.

我们还可以声明只读数组,ReadonlyArray<string>这意味着只读数组的字符串.

现在我想在第一个例子中有一个只读元组,但我希望它像第二个例子中那样是只读的.我该如何申报?

typescript

14
推荐指数
4
解决办法
9822
查看次数

如何在 Typescript 中输入对象键?

我有一个简单的函数,它在参数中接受一个对象。为了仅接收有效数据,我需要输入对象的键,如下所示:

type DataType = "about" | "favorites" | "username";
type UpdatedData = { [key in DataType]: any };

function onSave (updatedData: UpdatedData){
//do stuff
}

// in a component
const onClickSave = () => onSave({ "about": text });
Run Code Online (Sandbox Code Playgroud)

打字稿抛出以下错误:

'{ about: text; 类型的参数 }' 不可分配给“UpdatedData”类型的参数。输入 '{ 关于:文本;}' 缺少类型“UpdatedData”中的以下属性:收藏夹、用户名

如何解决这个问题?当然,我可以写[key: string][key in DataType]但打字就没用了。

javascript typescript reactjs

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

SendGrid 客户端打字稿错误:HttpMethod

我有:

import sendgridClient from '@sendgrid/client'
sendgridClient.setApiKey(process.env.SENDGRID_API_KEY);

const sendgridRequest = {
        method: 'PUT',
        url: '/v3/marketing/contacts',
        body: {
            list_ids: [myId],
            contacts: [
                {
                    email: req.body.email,
                    custom_fields: {
                        [myFieldId]: 'in_free_trial'
                    }
                }
            ]
        }
    };


await sendgridClient.request(sendgridRequest);
Run Code Online (Sandbox Code Playgroud)

但是我的 TypeScript 语言服务器给了我一个错误sendgridRequest

Argument of type '{ method: string; url: string; body: { list_ids: string[]; contacts: { email: any; custom_fields: { e5_T: string; }; }[]; }; }' is not assignable to parameter of type 'ClientRequest'.
  Types of property 'method' are incompatible.
    Type 'string' is …
Run Code Online (Sandbox Code Playgroud)

javascript node.js sendgrid typescript sendgrid-api-v3

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

将 firebase 链式方法重写为 promise.all

我创建了以下函数来删除用户,它是专用的集合,运行良好。

import * as admin from 'firebase-admin';
import * as functions from 'firebase-functions';

admin.initializeApp();

const Auth = admin.auth();
const UsersCollection = admin.firestore().collection(`users`);

exports.deleteUser = functions.https.onCall((data, context) => {
  if (context.auth) {
    const userID = context.auth.uid;

    Auth.deleteUser(userID)
      .then(() => {
        UsersCollection.doc(userID).delete()
          .catch(error => {
            console.log(error)
          })
      })
      .catch(error => {
        console.log(error)
      })
  }
});
Run Code Online (Sandbox Code Playgroud)

然后我尝试覆盖到 promise.all 中,以便用户的集合删除不必等到用户实际删除。所以我尝试执行以下操作:

exports.deleteUser = functions.https.onCall((data, context) => {
  if (context.auth) {
    const userID = context.auth.uid;
    const promises = [];
    const deleteCollection = UsersCollection.doc(userID).delete();

    promises.push(Auth.deleteUser(userID));
    promises.push(deleteCollection);

    return …
Run Code Online (Sandbox Code Playgroud)

firebase typescript google-cloud-functions

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

TypeScript const 断言和声明有什么区别?

我刚刚读到了 TypeScript 3.4 RC 中的新const断言功能,但我没有看到它与使用声明有何不同const

我使用公告页面中的一个示例对此进行了测试,该示例显然演示了如何使用as constconst断言)防止文字类型被扩展(例如,"circle"to string)。

// Example from official announcement
function getShapes() {
  let result = [
    { kind: "circle", radius: 100 },
    { kind: "square", sideLength: 50 },
  ] as const;

  return result;
}

for (const shape of getShapes()) {
  if (shape.kind === "circle") {
    console.log("Circle radius", shape.radius);
  } else {
    console.log("Square side length", shape.sideLength);
  }
}

// Output:
// Circle radius 100
// …
Run Code Online (Sandbox Code Playgroud)

typescript typescript3.0

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

是否可以使用静态变量进行类型定义?

我有一些带有指示其类型的静态变量的类。我想基于这些静态变量创建一个联合类型

class Foo {
  static typeId = 'i-am-foo';
}

class Bar {
  static typeId = 'i-am-bar';
}

type MyUnionType = Foo.typeId | Bar.typeId;
Run Code Online (Sandbox Code Playgroud)

TS游乐场

不幸的是这是不可能的,我收到错误

“Foo”仅指一种类型,但在这里用作命名空间。

是否可以使用静态变量进行类型定义?

typescript

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

Javascript 相当于 Typescript const 断言

javascript的 const 断言相当于什么typescript

const arr = [1,2,3,4] as const
Run Code Online (Sandbox Code Playgroud)

我想在 javascript 中实现这一点array以避免进一步的突变。

javascript arrays typescript

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