web-dev-qa-db-ja.com

エラーTS2339:プロパティ 'endsWith'はタイプ 'string'に存在しません

以下のコードブロックでこのエラーが発生します。

_error TS2339: Property 'endsWith' does not exist on type 'string'_

_let myList = angular.element(elem).attr("href").split("/");
let last = _.last<string>(myList);
if (last.endsWith("something")) {
   return last;
}
_

また、関数endsWith(...)があることを示すこのリンクを発見しました。

http://definitelytyped.org/docs/TypeScript-services--typescriptServices/classes/TypeScript.stringutilities.html

_.d.ts_ファイルがありませんか?

12
ipinak

endsWithES6関数 であるため、TypeScriptコンパイラ設定でES6をターゲットにする必要があります。または、そのためのインターフェイスを追加することもできます。

interface String {    
    endsWith(searchString: string, endPosition?: number): boolean;
};

[ 遊び場 ]

14
Martin Vseticka

TypeScriptコードをコンパイルするときは、ターゲットをES6に向けてください。

tsc --target ES6 "filename"
13
wandermonk

ここでは:VSコードをIDEとして使用しました
問題は:でした

let fName:String = "Yokey";
console.log(fName.anchor("url"));

結果は:

PS C:\MYahya\OS_DEV\TypeScript_lrn\1> tsc main.ts
main.ts(2,19): error TS2339: Property 'anchor' does not exist on type 'String'.

解決策:
プロジェクトに次のtsconfig.jsonファイルを含める必要があります。

{
    "compilerOptions": {
        "module": "commonjs",
        "target": "es6",
        "noImplicitAny": true,
        "strictNullChecks": true,
        "noImplicitReturns": true,
        "noImplicitThis": true,
        "noUnusedLocals": true,
        "noUnusedParameters": true,
        "baseUrl": "../types",
        "typeRoots": [
            "../types"
        ],
        "types": [],
        "forceConsistentCasingInFileNames": true,
    }
}

次に、tsc(ファイル名なし)を使用したので、トランスパイラーはtsconfig.jsonを使用して、ディレクトリでホストされているすべてのタイプスクリプトファイルをjsファイルにトランスコンパイルします。

3
Mohamed Yahya

webStormのようにintelliJ IDE)を使用している場合は、プロジェクトファイルが左側にある領域をクリックして、tsconfig.jsonを検索します。そのファイルで、esが古いバージョンに設定されていることがわかります。 「target」:「es3」を「target」:「es2018」のような最新のものに変更します

0
Mohammad