相关疑难解决方法(0)

在打字稿中,什么是!解除引用会员时(感叹号/爆炸)运营商?

在查看tslint规则的源代码时,我遇到了以下语句:

if (node.parent!.kind === ts.SyntaxKind.ObjectLiteralExpression) {
    return;
}
Run Code Online (Sandbox Code Playgroud)

注意!操作员之后node.parent.有趣!

我首先尝试使用我当前安装的TS版本(1.5.3)在本地编译该文件.结果错误指向爆炸的确切位置:

$ tsc --noImplicitAny memberAccessRule.ts 
noPublicModifierRule.ts(57,24): error TS1005: ')' expected.
Run Code Online (Sandbox Code Playgroud)

接下来我升级到最新的TS(2.1.6),编译它没有问题.所以它似乎是TS 2.x的特征.但是,转化完全忽略了爆炸,导致以下JS:

if (node.parent.kind === ts.SyntaxKind.ObjectLiteralExpression) {
    return;
}
Run Code Online (Sandbox Code Playgroud)

我的Google fu到目前为止都没有让我失望.

什么是TS的感叹号操作符,它是如何工作的?

typescript tslint

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

在分配之前使用变量“test” - Typescript

我在这个打字稿代码的实现中遇到错误。我在这里将一种类型映射到另一种类型。但是 vscode 显示在分配之前使用了变量“test”的错误。有人可以帮忙吗?

interface A {
   name: string;
   age: string;
   sex: string;
}

interface B {
   name: any;
   age: string;
   sex: string;
 }

const modifyData = (g : B) :A => {

    let test: A;
    test.name = g.name['ru'];
    test.age = g.age;
    test.sex = g.sex;

   return test as A;
};

const g = [{
  "name": {
      "en": "George",
      "ru": "Gregor"
       },
  "age": "21",
  "sex": "Male"
},
{
  "name": {
      "en": "David",
      "ru": "Diva"
       },,
  "age": "31",
  "sex": "Male"
}];

const data …
Run Code Online (Sandbox Code Playgroud)

typescript typescript-typings typescript2.0

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