Merge branch 'master' into builderApi

This commit is contained in:
Sheetal Nandi
2018-01-08 13:01:09 -08:00
594 changed files with 24753 additions and 6454 deletions
-5
View File
@@ -2,24 +2,19 @@
path = tests/cases/user/TypeScript-React-Starter/TypeScript-React-Starter
url = https://github.com/Microsoft/TypeScript-React-Starter
ignore = all
shallow = true
[submodule "tests/cases/user/TypeScript-Node-Starter/TypeScript-Node-Starter"]
path = tests/cases/user/TypeScript-Node-Starter/TypeScript-Node-Starter
url = https://github.com/Microsoft/TypeScript-Node-Starter.git
ignore = all
shallow = true
[submodule "tests/cases/user/TypeScript-React-Native-Starter/TypeScript-React-Native-Starter"]
path = tests/cases/user/TypeScript-React-Native-Starter/TypeScript-React-Native-Starter
url = https://github.com/Microsoft/TypeScript-React-Native-Starter.git
ignore = all
shallow = true
[submodule "tests/cases/user/TypeScript-Vue-Starter/TypeScript-Vue-Starter"]
path = tests/cases/user/TypeScript-Vue-Starter/TypeScript-Vue-Starter
url = https://github.com/Microsoft/TypeScript-Vue-Starter.git
ignore = all
shallow = true
[submodule "tests/cases/user/TypeScript-WeChat-Starter/TypeScript-WeChat-Starter"]
path = tests/cases/user/TypeScript-WeChat-Starter/TypeScript-WeChat-Starter
url = https://github.com/Microsoft/TypeScript-WeChat-Starter.git
ignore = all
shallow = true
+1
View File
@@ -18,6 +18,7 @@ branches:
- master
- release-2.5
- release-2.6
- release-2.7
install:
- npm uninstall typescript --no-save
+15 -1
View File
@@ -8,7 +8,14 @@ Issues that ask questions answered in the FAQ will be closed without elaboration
## 2. Search for Duplicates
[Search the existing issues](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&q=is%3Aissue) before logging a new one.
[Search the existing issues](https://github.com/Microsoft/TypeScript/search?type=Issues) before logging a new one.
Some search tips:
* *Don't* restrict your search to only open issues. An issue with a title similar to yours may have been closed as a duplicate of one with a less-findable title.
* Check for synonyms. For example, if your bug involves an interface, it likely also occurs with type aliases or classes.
* Search for the title of the issue you're about to log. This sounds obvious but 80% of the time this is sufficient to find a duplicate when one exists.
* Read more than the first page of results. Many bugs here use the same words so relevancy sorting is not particularly strong.
* If you have a crash, search for the first few topmost function names shown in the call stack.
## 3. Do you have a question?
@@ -183,3 +190,10 @@ jake baseline-accept
```
to establish the new baselines as the desired behavior. This will change the files in `tests\baselines\reference`, which should be included as part of your commit. It's important to carefully validate changes in the baselines.
## Localization
All strings the user may see are stored in [`diagnosticMessages.json`](./src/compiler/diagnosticMessages.json).
If you make changes to it, run `jake generate-diagnostics` to push them to the `Diagnostic` interface in [`diagnosticInformationMap.generated.ts`](./src/compiler/diagnosticInformationMap.generated.ts).
See [coding guidelines on diagnostic messages](https://github.com/Microsoft/TypeScript/wiki/Coding-guidelines#diagnostic-messages).
+2 -1
View File
@@ -150,7 +150,8 @@ const es2018LibrarySourceMap = es2018LibrarySource.map(source =>
({ target: "lib." + source, sources: ["header.d.ts", source] }));
const esnextLibrarySource = [
"esnext.asynciterable.d.ts"
"esnext.asynciterable.d.ts",
"esnext.promise.d.ts"
];
const esnextLibrarySourceMap = esnextLibrarySource.map(source =>
+7 -15
View File
@@ -130,6 +130,7 @@ var harnessSources = harnessCoreSources.concat([
"textStorage.ts",
"moduleResolution.ts",
"tsconfigParsing.ts",
"asserts.ts",
"builder.ts",
"commandLineParsing.ts",
"configurationExtension.ts",
@@ -212,7 +213,8 @@ var es2018LibrarySourceMap = es2018LibrarySource.map(function (source) {
});
var esnextLibrarySource = [
"esnext.asynciterable.d.ts"
"esnext.asynciterable.d.ts",
"esnext.promise.d.ts"
];
var esnextLibrarySourceMap = esnextLibrarySource.map(function (source) {
@@ -795,7 +797,7 @@ compileFile(
/*prereqs*/[builtLocalDirectory, tscFile, tsserverLibraryFile].concat(libraryTargets).concat(servicesSources).concat(harnessSources),
/*prefixes*/[],
/*useBuiltCompiler:*/ true,
/*opts*/ { types: ["node", "mocha"], lib: "es6" });
/*opts*/ { types: ["node", "mocha", "chai"], lib: "es6" });
var internalTests = "internal/";
@@ -1195,22 +1197,12 @@ task("update-sublime", ["local", serverFile], function () {
});
var tslintRuleDir = "scripts/tslint/rules";
var tslintRules = [
"booleanTriviaRule",
"debugAssertRule",
"nextLineRule",
"noBomRule",
"noIncrementDecrementRule",
"noInOperatorRule",
"noTypeAssertionWhitespaceRule",
"objectLiteralSurroundingSpaceRule",
"typeOperatorSpacingRule",
];
var tslintRules = fs.readdirSync(tslintRuleDir);
var tslintRulesFiles = tslintRules.map(function (p) {
return path.join(tslintRuleDir, p + ".ts");
return path.join(tslintRuleDir, p);
});
var tslintRulesOutFiles = tslintRules.map(function (p) {
return path.join(builtLocalDirectory, "tslint/rules", p + ".js");
return path.join(builtLocalDirectory, "tslint/rules", p.replace(".ts", ".js"));
});
var tslintFormattersDir = "scripts/tslint/formatters";
var tslintFormatters = [
+1462 -454
View File
File diff suppressed because it is too large Load Diff
+4 -3
View File
@@ -30,7 +30,7 @@
},
"devDependencies": {
"@types/browserify": "latest",
"@types/colors": "latest",
"@types/chai": "latest",
"@types/convert-source-map": "latest",
"@types/del": "latest",
"@types/glob": "latest",
@@ -44,7 +44,7 @@
"@types/minimist": "latest",
"@types/mkdirp": "latest",
"@types/mocha": "latest",
"@types/node": "latest",
"@types/node": "8.5.5",
"@types/q": "latest",
"@types/run-sequence": "latest",
"@types/through2": "latest",
@@ -52,6 +52,7 @@
"xml2js": "^0.4.19",
"browser-resolve": "^1.11.2",
"browserify": "latest",
"chai": "latest",
"convert-source-map": "latest",
"del": "latest",
"gulp": "3.X",
@@ -78,7 +79,7 @@
"ts-node": "latest",
"tslint": "latest",
"vinyl": "latest",
"colors": "latest",
"chalk": "latest",
"typescript": "next"
},
"scripts": {
@@ -1,5 +1,5 @@
import * as Lint from "tslint";
import * as colors from "colors";
import chalk from "chalk";
import { sep } from "path";
function groupBy<T>(array: ReadonlyArray<T> | undefined, getGroupId: (elem: T, index: number) => number | string): T[][] {
if (!array) {
@@ -52,7 +52,7 @@ function getLink(failure: Lint.RuleFailure, color: boolean): string {
if (path.indexOf("/") === -1 && path.indexOf("\\") === -1) {
path = `.${sep}${path}`;
}
return `${color ? (sev === "WARNING" ? colors.blue(sev) : colors.red(sev)) : sev}: ${path}:${lineAndCharacter.line + 1}:${lineAndCharacter.character + 1}`;
return `${color ? (sev === "WARNING" ? chalk.blue(sev) : chalk.red(sev)) : sev}: ${path}:${lineAndCharacter.line + 1}:${lineAndCharacter.character + 1}`;
}
function getLinkMaxSize(failures: Lint.RuleFailure[]): number {
@@ -91,7 +91,7 @@ export class Formatter extends Lint.Formatters.AbstractFormatter {
const nameMaxSize = getNameMaxSize(group);
return `
${currentFile}
${group.map(f => `${pad(getLink(f, /*color*/ true), getLink(f, /*color*/ false).length, linkMaxSize)} ${colors.grey(pad(f.getRuleName(), f.getRuleName().length, nameMaxSize))} ${colors.yellow(f.getFailure())}`).join("\n")}`;
${group.map(f => `${pad(getLink(f, /*color*/ true), getLink(f, /*color*/ false).length, linkMaxSize)} ${chalk.grey(pad(f.getRuleName(), f.getRuleName().length, nameMaxSize))} ${chalk.yellow(f.getFailure())}`).join("\n")}`;
}).join("\n");
}
}
+54
View File
@@ -0,0 +1,54 @@
import * as Lint from "tslint/lib";
import * as ts from "typescript";
export class Rule extends Lint.Rules.AbstractRule {
public apply(sourceFile: ts.SourceFile): Lint.RuleFailure[] {
return this.applyWithFunction(sourceFile, walk);
}
}
function walk(ctx: Lint.WalkContext<void>): void {
const { sourceFile } = ctx;
const lines = sourceFile.text.split("\n");
const strings = getLiterals(sourceFile);
lines.forEach((line, idx) => {
// Skip indentation.
const firstNonSpace = /\S/.exec(line);
if (firstNonSpace === null) {
return;
}
// Allow common uses of double spaces
// * To align `=` or `!=` signs
// * To align comments at the end of lines
// * To indent inside a comment
// * To use two spaces after a period
// * To include aligned `->` in a comment
const rgx = /[^/*. ] [^-!/= ]/g;
rgx.lastIndex = firstNonSpace.index;
const doubleSpace = rgx.exec(line);
// Also allow to align comments after `@param`
if (doubleSpace !== null && !line.includes("@param")) {
const pos = lines.slice(0, idx).reduce((len, line) => len + 1 + line.length, 0) + doubleSpace.index;
if (!strings.some(s => s.getStart() <= pos && s.end > pos)) {
ctx.addFailureAt(pos + 1, 2, "Use only one space.");
}
}
});
}
function getLiterals(sourceFile: ts.SourceFile): ReadonlyArray<ts.Node> {
const out: ts.Node[] = [];
sourceFile.forEachChild(function cb(node) {
switch (node.kind) {
case ts.SyntaxKind.StringLiteral:
case ts.SyntaxKind.TemplateHead:
case ts.SyntaxKind.TemplateMiddle:
case ts.SyntaxKind.TemplateTail:
case ts.SyntaxKind.NoSubstitutionTemplateLiteral:
case ts.SyntaxKind.RegularExpressionLiteral:
out.push(node);
}
node.forEachChild(cb);
});
return out;
}
+4 -4
View File
@@ -303,7 +303,7 @@ namespace ts {
// without names can only come from JSDocFunctionTypes.
Debug.assert(node.parent.kind === SyntaxKind.JSDocFunctionType);
const functionType = <JSDocFunctionType>node.parent;
const index = indexOf(functionType.parameters, node);
const index = functionType.parameters.indexOf(node as ParameterDeclaration);
return "arg" + index as __String;
case SyntaxKind.JSDocTypedefTag:
const name = getNameOfJSDocTypedef(node as JSDocTypedefTag);
@@ -1633,7 +1633,7 @@ namespace ts {
// to the one we would get for: { <...>(...): T }
//
// We do that by making an anonymous type literal symbol, and then setting the function
// symbol as its sole member. To the rest of the system, this symbol will be indistinguishable
// symbol as its sole member. To the rest of the system, this symbol will be indistinguishable
// from an actual type literal symbol you would have gotten had you used the long form.
const symbol = createSymbol(SymbolFlags.Signature, getDeclarationName(node));
addDeclarationToSymbol(symbol, node, SymbolFlags.Signature);
@@ -2431,7 +2431,7 @@ namespace ts {
if (!isPrototypeProperty && (!targetSymbol || !(targetSymbol.flags & SymbolFlags.Namespace)) && isLegalPosition) {
Debug.assert(isIdentifier(propertyAccess.expression));
const identifier = propertyAccess.expression as Identifier;
const flags = SymbolFlags.Module | SymbolFlags.JSContainer;
const flags = SymbolFlags.Module | SymbolFlags.JSContainer;
const excludeFlags = SymbolFlags.ValueModuleExcludes & ~SymbolFlags.JSContainer;
if (targetSymbol) {
addDeclarationToSymbol(symbol, identifier, flags);
@@ -2538,7 +2538,7 @@ namespace ts {
}
if (isBindingPattern(node.name)) {
bindAnonymousDeclaration(node, SymbolFlags.FunctionScopedVariable, "__" + indexOf(node.parent.parameters, node) as __String);
bindAnonymousDeclaration(node, SymbolFlags.FunctionScopedVariable, "__" + node.parent.parameters.indexOf(node) as __String);
}
else {
declareSymbolAndAddToSymbolTable(node, SymbolFlags.FunctionScopedVariable, SymbolFlags.ParameterExcludes);
+501 -398
View File
File diff suppressed because it is too large Load Diff
+2 -19
View File
@@ -145,6 +145,7 @@ namespace ts {
"es2017.intl": "lib.es2017.intl.d.ts",
"es2017.typedarrays": "lib.es2017.typedarrays.d.ts",
"esnext.asynciterable": "lib.esnext.asynciterable.d.ts",
"esnext.promise": "lib.esnext.promise.d.ts",
}),
},
showInSimplifiedHelpView: true,
@@ -1863,7 +1864,7 @@ namespace ts {
return normalizeNonListOptionValue(option, basePath, value);
}
function normalizeNonListOptionValue(option: CommandLineOption, basePath: string, value: any): CompilerOptionsValue {
function normalizeNonListOptionValue(option: CommandLineOption, basePath: string, value: any): CompilerOptionsValue {
if (option.isFilePath) {
value = normalizePath(combinePaths(basePath, value));
if (value === "") {
@@ -1906,21 +1907,6 @@ namespace ts {
*/
const invalidTrailingRecursionPattern = /(^|\/)\*\*\/?$/;
/**
* Tests for a path with multiple recursive directory wildcards.
* Matches **\** and **\a\**, but not **\a**b.
*
* NOTE: used \ in place of / above to avoid issues with multiline comments.
*
* Breakdown:
* (^|\/) # matches either the beginning of the string or a directory separator.
* \*\*\/ # matches a recursive directory wildcard "**" followed by a directory separator.
* (.*\/)? # optionally matches any number of characters followed by a directory separator.
* \*\* # matches a recursive directory wildcard "**"
* ($|\/) # matches either the end of the string or a directory separator.
*/
const invalidMultipleRecursionPatterns = /(^|\/)\*\*\/(.*\/)?\*\*($|\/)/;
/**
* Tests for a path where .. appears after a recursive directory wildcard.
* Matches **\..\*, **\a\..\*, and **\.., but not ..\**\*
@@ -2115,9 +2101,6 @@ namespace ts {
if (!allowTrailingRecursion && invalidTrailingRecursionPattern.test(spec)) {
return Diagnostics.File_specification_cannot_end_in_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0;
}
else if (invalidMultipleRecursionPatterns.test(spec)) {
return Diagnostics.File_specification_cannot_contain_multiple_recursive_directory_wildcards_Asterisk_Asterisk_Colon_0;
}
else if (invalidDotDotAfterRecursiveWildcardPattern.test(spec)) {
return Diagnostics.File_specification_cannot_contain_a_parent_directory_that_appears_after_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0;
}
+10 -26
View File
@@ -288,6 +288,8 @@ namespace ts {
return undefined;
}
export function findLast<T, U extends T>(array: ReadonlyArray<T>, predicate: (element: T, index: number) => element is U): U | undefined;
export function findLast<T>(array: ReadonlyArray<T>, predicate: (element: T, index: number) => boolean): T | undefined;
export function findLast<T>(array: ReadonlyArray<T>, predicate: (element: T, index: number) => boolean): T | undefined {
for (let i = array.length - 1; i >= 0; i--) {
const value = array[i];
@@ -333,17 +335,6 @@ namespace ts {
return false;
}
export function indexOf<T>(array: ReadonlyArray<T>, value: T): number {
if (array) {
for (let i = 0; i < array.length; i++) {
if (array[i] === value) {
return i;
}
}
}
return -1;
}
export function indexOfAnyCharCode(text: string, charCodes: ReadonlyArray<number>, start?: number): number {
for (let i = start || 0; i < text.length; i++) {
if (contains(charCodes, text.charCodeAt(i))) {
@@ -1417,8 +1408,8 @@ namespace ts {
return Array.isArray ? Array.isArray(value) : value instanceof Array;
}
export function toArray<T>(value: T | ReadonlyArray<T>): ReadonlyArray<T>;
export function toArray<T>(value: T | T[]): T[];
export function toArray<T>(value: T | ReadonlyArray<T>): ReadonlyArray<T>;
export function toArray<T>(value: T | T[]): T[] {
return isArray(value) ? value : [value];
}
@@ -1995,11 +1986,6 @@ namespace ts {
return /^\.\.?($|[\\/])/.test(path);
}
/** @deprecated Use `!isExternalModuleNameRelative(moduleName)` instead. */
export function moduleHasNonRelativeName(moduleName: string): boolean {
return !isExternalModuleNameRelative(moduleName);
}
export function getEmitScriptTarget(compilerOptions: CompilerOptions) {
return compilerOptions.target || ScriptTarget.ES3;
}
@@ -2086,7 +2072,7 @@ namespace ts {
function getNormalizedPathComponentsOfUrl(url: string) {
// Get root length of http://www.website.com/folder1/folder2/
// In this example the root is: http://www.website.com/
// In this example the root is: http://www.website.com/
// normalized path components should be ["http://www.website.com/", "folder1", "folder2"]
const urlLength = url.length;
@@ -2119,7 +2105,7 @@ namespace ts {
}
else {
// Can't find the host assume the rest of the string as component
// but make sure we append "/" to it as root is not joined using "/"
// but make sure we append "/" to it as root is not joined using "/"
// eg. if url passed in was http://website.com we want to use root as [http://website.com/]
// so that other path manipulations will be correct and it can be merged with relative paths correctly
return [url + directorySeparator];
@@ -2140,7 +2126,7 @@ namespace ts {
const directoryComponents = getNormalizedPathOrUrlComponents(directoryPathOrUrl, currentDirectory);
if (directoryComponents.length > 1 && lastOrUndefined(directoryComponents) === "") {
// If the directory path given was of type test/cases/ then we really need components of directory to be only till its name
// that is ["test", "cases", ""] needs to be actually ["test", "cases"]
// that is ["test", "cases", ""] needs to be actually ["test", "cases"]
directoryComponents.pop();
}
@@ -2382,7 +2368,6 @@ namespace ts {
function getSubPatternFromSpec(spec: string, basePath: string, usage: "files" | "directories" | "exclude", { singleAsteriskRegexFragment, doubleAsteriskRegexFragment, replaceWildcardCharacter }: WildcardMatcher): string | undefined {
let subpattern = "";
let hasRecursiveDirectoryWildcard = false;
let hasWrittenComponent = false;
const components = getNormalizedPathComponents(spec, basePath);
const lastComponent = lastOrUndefined(components);
@@ -2401,12 +2386,7 @@ namespace ts {
let optionalCount = 0;
for (let component of components) {
if (component === "**") {
if (hasRecursiveDirectoryWildcard) {
return undefined;
}
subpattern += doubleAsteriskRegexFragment;
hasRecursiveDirectoryWildcard = true;
}
else {
if (usage === "directories") {
@@ -3053,4 +3033,8 @@ namespace ts {
}
export function assertTypeIsNever(_: never): void { } // tslint:disable-line no-empty
export function singleElementArray<T>(t: T | undefined): T[] | undefined {
return t === undefined ? undefined : [t];
}
}
+4 -3
View File
@@ -64,7 +64,7 @@ namespace ts {
let currentIdentifiers: Map<string>;
let isCurrentFileExternalModule: boolean;
let reportedDeclarationError = false;
let errorNameNode: DeclarationName;
let errorNameNode: DeclarationName | QualifiedName;
const emitJsDocComments = compilerOptions.removeComments ? noop : writeJsDocComments;
const emit = compilerOptions.stripInternal ? stripInternal : emitNode;
let needsDeclare = true;
@@ -1199,7 +1199,7 @@ namespace ts {
write(">");
}
}
else {
else {
emitHeritageClause([baseTypeNode], /*isImplementsList*/ false);
}
}
@@ -1372,7 +1372,7 @@ namespace ts {
// if this is property of type literal,
// or is parameter of method/call/construct/index signature of type literal
// emit only if type is specified
if (node.type) {
if (hasType(node)) {
write(": ");
emitType(node.type);
}
@@ -1866,6 +1866,7 @@ namespace ts {
// it allows emitSeparatedList to write separator appropriately)
// Example:
// original: function foo([, x, ,]) {}
// tslint:disable-next-line no-double-space
// emit : function foo([ , x, , ]) {}
write(" ");
}
+12 -4
View File
@@ -2276,6 +2276,10 @@
"category": "Error",
"code": 2719
},
"Class '{0}' incorrectly implements class '{1}'. Did you mean to extend '{1}' and inherit its members as a subclass?": {
"category": "Error",
"code": 2720
},
"Import declaration '{0}' is using private name '{1}'.": {
"category": "Error",
@@ -2623,10 +2627,6 @@
"category": "Error",
"code": 5010
},
"File specification cannot contain multiple recursive directory wildcards ('**'): '{0}'.": {
"category": "Error",
"code": 5011
},
"Cannot read file '{0}': {1}.": {
"category": "Error",
"code": 5012
@@ -3420,6 +3420,14 @@
"category": "Message",
"code": 6187
},
"Numeric separators are not allowed here.": {
"category": "Error",
"code": 6188
},
"Multiple consecutive numeric separators are not permitted.": {
"category": "Error",
"code": 6189
},
"Variable '{0}' implicitly has an '{1}' type.": {
"category": "Error",
"code": 7005
+4 -4
View File
@@ -3831,13 +3831,13 @@ namespace ts {
if (isLeftSideOfBinary) {
// No need to parenthesize the left operand when the binary operator is
// left associative:
// (a*b)/x -> a*b/x
// (a**b)/x -> a**b/x
// (a*b)/x -> a*b/x
// (a**b)/x -> a**b/x
//
// Parentheses are needed for the left operand when the binary operator is
// right associative:
// (a/b)**x -> (a/b)**x
// (a**b)**x -> (a**b)**x
// (a/b)**x -> (a/b)**x
// (a**b)**x -> (a**b)**x
return binaryOperatorAssociativity === Associativity.Right;
}
else {
+58 -24
View File
@@ -88,20 +88,48 @@ namespace ts {
case SyntaxKind.SpreadAssignment:
return visitNode(cbNode, (<SpreadAssignment>node).expression);
case SyntaxKind.Parameter:
return visitNodes(cbNode, cbNodes, node.decorators) ||
visitNodes(cbNode, cbNodes, node.modifiers) ||
visitNode(cbNode, (<ParameterDeclaration>node).dotDotDotToken) ||
visitNode(cbNode, (<ParameterDeclaration>node).name) ||
visitNode(cbNode, (<ParameterDeclaration>node).questionToken) ||
visitNode(cbNode, (<ParameterDeclaration>node).type) ||
visitNode(cbNode, (<ParameterDeclaration>node).initializer);
case SyntaxKind.PropertyDeclaration:
return visitNodes(cbNode, cbNodes, node.decorators) ||
visitNodes(cbNode, cbNodes, node.modifiers) ||
visitNode(cbNode, (<PropertyDeclaration>node).name) ||
visitNode(cbNode, (<PropertyDeclaration>node).questionToken) ||
visitNode(cbNode, (<PropertyDeclaration>node).exclamationToken) ||
visitNode(cbNode, (<PropertyDeclaration>node).type) ||
visitNode(cbNode, (<PropertyDeclaration>node).initializer);
case SyntaxKind.PropertySignature:
return visitNodes(cbNode, cbNodes, node.decorators) ||
visitNodes(cbNode, cbNodes, node.modifiers) ||
visitNode(cbNode, (<PropertySignature>node).name) ||
visitNode(cbNode, (<PropertySignature>node).questionToken) ||
visitNode(cbNode, (<PropertySignature>node).type) ||
visitNode(cbNode, (<PropertySignature>node).initializer);
case SyntaxKind.PropertyAssignment:
return visitNodes(cbNode, cbNodes, node.decorators) ||
visitNodes(cbNode, cbNodes, node.modifiers) ||
visitNode(cbNode, (<PropertyAssignment>node).name) ||
visitNode(cbNode, (<PropertyAssignment>node).questionToken) ||
visitNode(cbNode, (<PropertyAssignment>node).initializer);
case SyntaxKind.VariableDeclaration:
return visitNodes(cbNode, cbNodes, node.decorators) ||
visitNodes(cbNode, cbNodes, node.modifiers) ||
visitNode(cbNode, (<VariableDeclaration>node).name) ||
visitNode(cbNode, (<VariableDeclaration>node).exclamationToken) ||
visitNode(cbNode, (<VariableDeclaration>node).type) ||
visitNode(cbNode, (<VariableDeclaration>node).initializer);
case SyntaxKind.BindingElement:
return visitNodes(cbNode, cbNodes, node.decorators) ||
visitNodes(cbNode, cbNodes, node.modifiers) ||
visitNode(cbNode, (<VariableLikeDeclaration>node).propertyName) ||
visitNode(cbNode, (<VariableLikeDeclaration>node).dotDotDotToken) ||
visitNode(cbNode, (<VariableLikeDeclaration>node).name) ||
visitNode(cbNode, (<VariableLikeDeclaration>node).questionToken) ||
visitNode(cbNode, (<VariableLikeDeclaration>node).exclamationToken) ||
visitNode(cbNode, (<VariableLikeDeclaration>node).type) ||
visitNode(cbNode, (<VariableLikeDeclaration>node).initializer);
visitNode(cbNode, (<BindingElement>node).propertyName) ||
visitNode(cbNode, (<BindingElement>node).dotDotDotToken) ||
visitNode(cbNode, (<BindingElement>node).name) ||
visitNode(cbNode, (<BindingElement>node).initializer);
case SyntaxKind.FunctionType:
case SyntaxKind.ConstructorType:
case SyntaxKind.CallSignature:
@@ -557,7 +585,7 @@ namespace ts {
// 'disallow-in' set to 'false'. Otherwise, if we had 'allowsIn' set to 'true', then almost
// all nodes would need extra state on them to store this info.
//
// Note: 'allowIn' and 'allowYield' track 1:1 with the [in] and [yield] concepts in the ES6
// Note: 'allowIn' and 'allowYield' track 1:1 with the [in] and [yield] concepts in the ES6
// grammar specification.
//
// An important thing about these context concepts. By default they are effectively inherited
@@ -673,7 +701,7 @@ namespace ts {
function getLanguageVariant(scriptKind: ScriptKind) {
// .tsx and .jsx files are treated as jsx language variant.
return scriptKind === ScriptKind.TSX || scriptKind === ScriptKind.JSX || scriptKind === ScriptKind.JS || scriptKind === ScriptKind.JSON ? LanguageVariant.JSX : LanguageVariant.Standard;
return scriptKind === ScriptKind.TSX || scriptKind === ScriptKind.JSX || scriptKind === ScriptKind.JS || scriptKind === ScriptKind.JSON ? LanguageVariant.JSX : LanguageVariant.Standard;
}
function initializeState(_sourceText: string, languageVersion: ScriptTarget, _syntaxCursor: IncrementalParser.SyntaxCursor, scriptKind: ScriptKind) {
@@ -1401,9 +1429,13 @@ namespace ts {
return token() === SyntaxKind.CommaToken || token() === SyntaxKind.DotDotDotToken || isIdentifierOrPattern();
case ParsingContext.TypeParameters:
return isIdentifier();
case ParsingContext.ArgumentExpressions:
case ParsingContext.ArrayLiteralMembers:
return token() === SyntaxKind.CommaToken || token() === SyntaxKind.DotDotDotToken || isStartOfExpression();
if (token() === SyntaxKind.CommaToken) {
return true;
}
// falls through
case ParsingContext.ArgumentExpressions:
return token() === SyntaxKind.DotDotDotToken || isStartOfExpression();
case ParsingContext.Parameters:
return isStartOfParameter();
case ParsingContext.TypeArguments:
@@ -1425,7 +1457,7 @@ namespace ts {
function isValidHeritageClauseObjectLiteral() {
Debug.assert(token() === SyntaxKind.OpenBraceToken);
if (nextToken() === SyntaxKind.CloseBraceToken) {
// if we see "extends {}" then only treat the {} as what we're extending (and not
// if we see "extends {}" then only treat the {} as what we're extending (and not
// the class body) if we have:
//
// extends {} {
@@ -1521,7 +1553,7 @@ namespace ts {
function isVariableDeclaratorListTerminator(): boolean {
// If we can consume a semicolon (either explicitly, or with ASI), then consider us done
// with parsing the list of variable declarators.
// with parsing the list of variable declarators.
if (canParseSemicolon()) {
return true;
}
@@ -2241,7 +2273,7 @@ namespace ts {
//
// <T extends "">
//
// We do *not* want to consume the > as we're consuming the expression for "".
// We do *not* want to consume the `>` as we're consuming the expression for "".
node.expression = parseUnaryExpressionOrHigher();
}
}
@@ -3061,7 +3093,7 @@ namespace ts {
// And production (2) is parsed in "tryParseParenthesizedArrowFunctionExpression".
//
// If we do successfully parse arrow-function, we must *not* recurse for productions 1, 2 or 3. An ArrowFunction is
// not a LeftHandSideExpression, nor does it start a ConditionalExpression. So we are done
// not a LeftHandSideExpression, nor does it start a ConditionalExpression. So we are done
// with AssignmentExpression if we see one.
const arrowExpression = tryParseParenthesizedArrowFunctionExpression() || tryParseAsyncSimpleArrowFunctionExpression();
if (arrowExpression) {
@@ -3091,7 +3123,7 @@ namespace ts {
// we're in '2' or '3'. Consume the assignment and return.
//
// Note: we call reScanGreaterToken so that we get an appropriately merged token
// for cases like > > = becoming >>=
// for cases like `> > =` becoming `>>=`
if (isLeftHandSideExpression(expr) && isAssignmentOperator(reScanGreaterToken())) {
return makeBinaryExpression(expr, <BinaryOperatorToken>parseTokenNode(), parseAssignmentExpressionOrHigher());
}
@@ -3247,7 +3279,7 @@ namespace ts {
if (first === SyntaxKind.OpenParenToken) {
if (second === SyntaxKind.CloseParenToken) {
// Simple cases: "() =>", "(): ", and "() {".
// Simple cases: "() =>", "(): ", and "() {".
// This is an arrow function with no parameters.
// The last one is not actually an arrow function,
// but this is probably what the user intended.
@@ -3867,7 +3899,8 @@ namespace ts {
// We don't want to eagerly consume all import keyword as import call expression so we look a head to find "("
// For example:
// var foo3 = require("subfolder
// import * as foo1 from "module-from-node -> we want this import to be a statement rather than import call expression
// import * as foo1 from "module-from-node
// We want this import to be a statement rather than import call expression
sourceFile.flags |= NodeFlags.PossiblyContainsDynamicImport;
expression = parseTokenNode<PrimaryExpression>();
}
@@ -3917,7 +3950,7 @@ namespace ts {
// treated as the invocation of "new Foo". We disambiguate that in code (to match
// the original grammar) by making sure that if we see an ObjectCreationExpression
// we always consume arguments if they are there. So we treat "new Foo()" as an
// object creation only, and not at all as an invocation) Another way to think
// object creation only, and not at all as an invocation. Another way to think
// about this is that for every "new" that we see, we will consume an argument list if
// it is there as part of the *associated* object creation node. Any additional
// argument lists we see, will become invocation expressions.
@@ -4333,7 +4366,7 @@ namespace ts {
const typeArguments = parseDelimitedList(ParsingContext.TypeArguments, parseType);
if (!parseExpected(SyntaxKind.GreaterThanToken)) {
// If it doesn't have the closing > then it's definitely not an type argument list.
// If it doesn't have the closing `>` then it's definitely not an type argument list.
return undefined;
}
@@ -5366,8 +5399,8 @@ namespace ts {
// off. The grammar would look something like this:
//
// MemberVariableDeclaration[Yield]:
// AccessibilityModifier_opt PropertyName TypeAnnotation_opt Initializer_opt[In];
// AccessibilityModifier_opt static_opt PropertyName TypeAnnotation_opt Initializer_opt[In, ?Yield];
// AccessibilityModifier_opt PropertyName TypeAnnotation_opt Initializer_opt[In];
// AccessibilityModifier_opt static_opt PropertyName TypeAnnotation_opt Initializer_opt[In, ?Yield];
//
// The checker may still error in the static case to explicitly disallow the yield expression.
node.initializer = hasModifier(node, ModifierFlags.Static)
@@ -5462,6 +5495,7 @@ namespace ts {
switch (token()) {
case SyntaxKind.OpenParenToken: // Method declaration
case SyntaxKind.LessThanToken: // Generic Method declaration
case SyntaxKind.ExclamationToken: // Non-null assertion on property name
case SyntaxKind.ColonToken: // Type Annotation for declaration
case SyntaxKind.EqualsToken: // Initializer for declaration
case SyntaxKind.QuestionToken: // Not valid, but permitted so that it gets caught later on.
@@ -7048,7 +7082,7 @@ namespace ts {
// If the 'pos' is before the start of the change, then we don't need to touch it.
// If it isn't, then the 'pos' must be inside the change. How we update it will
// depend if delta is positive or negative. If delta is positive then we have
// depend if delta is positive or negative. If delta is positive then we have
// something like:
//
// -------------------AAA-----------------
@@ -7073,7 +7107,7 @@ namespace ts {
// If the 'end' is after the change range, then we always adjust it by the delta
// amount. However, if the end is in the change range, then how we adjust it
// will depend on if delta is positive or negative. If delta is positive then we
// will depend on if delta is positive or negative. If delta is positive then we
// have something like:
//
// -------------------AAA-----------------
+29 -16
View File
@@ -5,7 +5,7 @@
namespace ts {
const ignoreDiagnosticCommentRegEx = /(^\s*$)|(^\s*\/\/\/?\s*(@ts-ignore)?)/;
export function findConfigFile(searchPath: string, fileExists: (fileName: string) => boolean, configName = "tsconfig.json"): string {
export function findConfigFile(searchPath: string, fileExists: (fileName: string) => boolean, configName = "tsconfig.json"): string | undefined {
return forEachAncestorDirectory(searchPath, ancestor => {
const fileName = combinePaths(ancestor, configName);
return fileExists(fileName) ? fileName : undefined;
@@ -190,6 +190,7 @@ namespace ts {
readFile: fileName => sys.readFile(fileName),
trace: (s: string) => sys.write(s + newLine),
directoryExists: directoryName => sys.directoryExists(directoryName),
getEnvironmentVariable: name => sys.getEnvironmentVariable ? sys.getEnvironmentVariable(name) : "",
getDirectories: (path: string) => sys.getDirectories(path),
realpath
};
@@ -239,22 +240,28 @@ namespace ts {
return errorMessage;
}
const redForegroundEscapeSequence = "\u001b[91m";
const yellowForegroundEscapeSequence = "\u001b[93m";
const blueForegroundEscapeSequence = "\u001b[93m";
/** @internal */
export enum ForegroundColorEscapeSequences {
Grey = "\u001b[90m",
Red = "\u001b[91m",
Yellow = "\u001b[93m",
Blue = "\u001b[94m",
Cyan = "\u001b[96m"
}
const gutterStyleSequence = "\u001b[30;47m";
const gutterSeparator = " ";
const resetEscapeSequence = "\u001b[0m";
const ellipsis = "...";
function getCategoryFormat(category: DiagnosticCategory): string {
switch (category) {
case DiagnosticCategory.Warning: return yellowForegroundEscapeSequence;
case DiagnosticCategory.Error: return redForegroundEscapeSequence;
case DiagnosticCategory.Message: return blueForegroundEscapeSequence;
case DiagnosticCategory.Warning: return ForegroundColorEscapeSequences.Yellow;
case DiagnosticCategory.Error: return ForegroundColorEscapeSequences.Red;
case DiagnosticCategory.Message: return ForegroundColorEscapeSequences.Blue;
}
}
function formatAndReset(text: string, formatStyle: string) {
/** @internal */
export function formatColorAndReset(text: string, formatStyle: string) {
return formatStyle + text + resetEscapeSequence;
}
@@ -287,7 +294,7 @@ namespace ts {
// If the error spans over 5 lines, we'll only show the first 2 and last 2 lines,
// so we'll skip ahead to the second-to-last line.
if (hasMoreThanFiveLines && firstLine + 1 < i && i < lastLine - 1) {
context += formatAndReset(padLeft(ellipsis, gutterWidth), gutterStyleSequence) + gutterSeparator + host.getNewLine();
context += formatColorAndReset(padLeft(ellipsis, gutterWidth), gutterStyleSequence) + gutterSeparator + host.getNewLine();
i = lastLine - 1;
}
@@ -298,12 +305,12 @@ namespace ts {
lineContent = lineContent.replace("\t", " "); // convert tabs to single spaces
// Output the gutter and the actual contents of the line.
context += formatAndReset(padLeft(i + 1 + "", gutterWidth), gutterStyleSequence) + gutterSeparator;
context += formatColorAndReset(padLeft(i + 1 + "", gutterWidth), gutterStyleSequence) + gutterSeparator;
context += lineContent + host.getNewLine();
// Output the gutter and the error span for the line using tildes.
context += formatAndReset(padLeft("", gutterWidth), gutterStyleSequence) + gutterSeparator;
context += redForegroundEscapeSequence;
context += formatColorAndReset(padLeft("", gutterWidth), gutterStyleSequence) + gutterSeparator;
context += ForegroundColorEscapeSequences.Red;
if (i === firstLine) {
// If we're on the last line, then limit it to the last character of the last line.
// Otherwise, we'll just squiggle the rest of the line, giving 'slice' no end position.
@@ -322,13 +329,19 @@ namespace ts {
context += resetEscapeSequence;
}
output += host.getNewLine();
output += `${ relativeFileName }(${ firstLine + 1 },${ firstLineChar + 1 }): `;
output += formatColorAndReset(relativeFileName, ForegroundColorEscapeSequences.Cyan);
output += ":";
output += formatColorAndReset(`${ firstLine + 1 }`, ForegroundColorEscapeSequences.Yellow);
output += ":";
output += formatColorAndReset(`${ firstLineChar + 1 }`, ForegroundColorEscapeSequences.Yellow);
output += " - ";
}
const categoryColor = getCategoryFormat(diagnostic.category);
const category = DiagnosticCategory[diagnostic.category].toLowerCase();
output += `${ formatAndReset(category, categoryColor) } TS${ diagnostic.code }: ${ flattenDiagnosticMessageText(diagnostic.messageText, host.getNewLine()) }`;
output += formatColorAndReset(category, categoryColor);
output += formatColorAndReset(` TS${ diagnostic.code }: `, ForegroundColorEscapeSequences.Grey);
output += flattenDiagnosticMessageText(diagnostic.messageText, host.getNewLine());
if (diagnostic.file) {
output += host.getNewLine();
@@ -337,7 +350,7 @@ namespace ts {
output += host.getNewLine();
}
return output;
return output + host.getNewLine();
}
export function flattenDiagnosticMessageText(messageText: string | DiagnosticMessageChain, newLine: string): string {
+131 -26
View File
@@ -193,7 +193,7 @@ namespace ts {
/*
As per ECMAScript Language Specification 3th Edition, Section 7.6: Identifiers
IdentifierStart ::
Can contain Unicode 3.0.0 categories:
Can contain Unicode 3.0.0 categories:
Uppercase letter (Lu),
Lowercase letter (Ll),
Titlecase letter (Lt),
@@ -201,7 +201,7 @@ namespace ts {
Other letter (Lo), or
Letter number (Nl).
IdentifierPart :: =
Can contain IdentifierStart + Unicode 3.0.0 categories:
Can contain IdentifierStart + Unicode 3.0.0 categories:
Non-spacing mark (Mn),
Combining spacing mark (Mc),
Decimal number (Nd), or
@@ -216,7 +216,7 @@ namespace ts {
/*
As per ECMAScript Language Specification 5th Edition, Section 7.6: ISyntaxToken Names and Identifiers
IdentifierStart ::
Can contain Unicode 6.2 categories:
Can contain Unicode 6.2 categories:
Uppercase letter (Lu),
Lowercase letter (Ll),
Titlecase letter (Lt),
@@ -224,7 +224,7 @@ namespace ts {
Other letter (Lo), or
Letter number (Nl).
IdentifierPart ::
Can contain IdentifierStart + Unicode 6.2 categories:
Can contain IdentifierStart + Unicode 6.2 categories:
Non-spacing mark (Mn),
Combining spacing mark (Mc),
Decimal number (Nd),
@@ -561,9 +561,9 @@ namespace ts {
return false;
}
function scanConflictMarkerTrivia(text: string, pos: number, error?: ErrorCallback) {
function scanConflictMarkerTrivia(text: string, pos: number, error?: (diag: DiagnosticMessage, pos?: number, len?: number) => void) {
if (error) {
error(Diagnostics.Merge_conflict_marker_encountered, mergeConflictMarkerLength);
error(Diagnostics.Merge_conflict_marker_encountered, pos, mergeConflictMarkerLength);
}
const ch = text.charCodeAt(pos);
@@ -852,34 +852,92 @@ namespace ts {
scanRange,
};
function error(message: DiagnosticMessage, length?: number): void {
function error(message: DiagnosticMessage): void;
function error(message: DiagnosticMessage, errPos: number, length: number): void;
function error(message: DiagnosticMessage, errPos: number = pos, length?: number): void {
if (onError) {
const oldPos = pos;
pos = errPos;
onError(message, length || 0);
pos = oldPos;
}
}
function scanNumberFragment(): string {
let start = pos;
let allowSeparator = false;
let isPreviousTokenSeparator = false;
let result = "";
while (true) {
const ch = text.charCodeAt(pos);
if (ch === CharacterCodes._) {
tokenFlags |= TokenFlags.ContainsSeparator;
if (allowSeparator) {
allowSeparator = false;
isPreviousTokenSeparator = true;
result += text.substring(start, pos);
}
else if (isPreviousTokenSeparator) {
error(Diagnostics.Multiple_consecutive_numeric_separators_are_not_permitted, pos, 1);
}
else {
error(Diagnostics.Numeric_separators_are_not_allowed_here, pos, 1);
}
pos++;
start = pos;
continue;
}
if (isDigit(ch)) {
allowSeparator = true;
isPreviousTokenSeparator = false;
pos++;
continue;
}
break;
}
if (text.charCodeAt(pos - 1) === CharacterCodes._) {
error(Diagnostics.Numeric_separators_are_not_allowed_here, pos - 1, 1);
}
return result + text.substring(start, pos);
}
function scanNumber(): string {
const start = pos;
while (isDigit(text.charCodeAt(pos))) pos++;
const mainFragment = scanNumberFragment();
let decimalFragment: string;
let scientificFragment: string;
if (text.charCodeAt(pos) === CharacterCodes.dot) {
pos++;
while (isDigit(text.charCodeAt(pos))) pos++;
decimalFragment = scanNumberFragment();
}
let end = pos;
if (text.charCodeAt(pos) === CharacterCodes.E || text.charCodeAt(pos) === CharacterCodes.e) {
pos++;
tokenFlags |= TokenFlags.Scientific;
if (text.charCodeAt(pos) === CharacterCodes.plus || text.charCodeAt(pos) === CharacterCodes.minus) pos++;
if (isDigit(text.charCodeAt(pos))) {
pos++;
while (isDigit(text.charCodeAt(pos))) pos++;
end = pos;
}
else {
const preNumericPart = pos;
const finalFragment = scanNumberFragment();
if (!finalFragment) {
error(Diagnostics.Digit_expected);
}
else {
scientificFragment = text.substring(end, preNumericPart) + finalFragment;
end = pos;
}
}
if (tokenFlags & TokenFlags.ContainsSeparator) {
let result = mainFragment;
if (decimalFragment) {
result += "." + decimalFragment;
}
if (scientificFragment) {
result += scientificFragment;
}
return "" + +result;
}
else {
return "" + +(text.substring(start, end)); // No need to use all the fragments; no _ removal needed
}
return "" + +(text.substring(start, end));
}
function scanOctalDigits(): number {
@@ -894,23 +952,41 @@ namespace ts {
* Scans the given number of hexadecimal digits in the text,
* returning -1 if the given number is unavailable.
*/
function scanExactNumberOfHexDigits(count: number): number {
return scanHexDigits(/*minCount*/ count, /*scanAsManyAsPossible*/ false);
function scanExactNumberOfHexDigits(count: number, canHaveSeparators: boolean): number {
return scanHexDigits(/*minCount*/ count, /*scanAsManyAsPossible*/ false, canHaveSeparators);
}
/**
* Scans as many hexadecimal digits as are available in the text,
* returning -1 if the given number of digits was unavailable.
*/
function scanMinimumNumberOfHexDigits(count: number): number {
return scanHexDigits(/*minCount*/ count, /*scanAsManyAsPossible*/ true);
function scanMinimumNumberOfHexDigits(count: number, canHaveSeparators: boolean): number {
return scanHexDigits(/*minCount*/ count, /*scanAsManyAsPossible*/ true, canHaveSeparators);
}
function scanHexDigits(minCount: number, scanAsManyAsPossible: boolean): number {
function scanHexDigits(minCount: number, scanAsManyAsPossible: boolean, canHaveSeparators: boolean): number {
let digits = 0;
let value = 0;
let allowSeparator = false;
let isPreviousTokenSeparator = false;
while (digits < minCount || scanAsManyAsPossible) {
const ch = text.charCodeAt(pos);
if (canHaveSeparators && ch === CharacterCodes._) {
tokenFlags |= TokenFlags.ContainsSeparator;
if (allowSeparator) {
allowSeparator = false;
isPreviousTokenSeparator = true;
}
else if (isPreviousTokenSeparator) {
error(Diagnostics.Multiple_consecutive_numeric_separators_are_not_permitted, pos, 1);
}
else {
error(Diagnostics.Numeric_separators_are_not_allowed_here, pos, 1);
}
pos++;
continue;
}
allowSeparator = canHaveSeparators;
if (ch >= CharacterCodes._0 && ch <= CharacterCodes._9) {
value = value * 16 + ch - CharacterCodes._0;
}
@@ -925,10 +1001,14 @@ namespace ts {
}
pos++;
digits++;
isPreviousTokenSeparator = false;
}
if (digits < minCount) {
value = -1;
}
if (text.charCodeAt(pos - 1) === CharacterCodes._) {
error(Diagnostics.Numeric_separators_are_not_allowed_here, pos - 1, 1);
}
return value;
}
@@ -1097,7 +1177,7 @@ namespace ts {
}
function scanHexadecimalEscape(numDigits: number): string {
const escapedValue = scanExactNumberOfHexDigits(numDigits);
const escapedValue = scanExactNumberOfHexDigits(numDigits, /*canHaveSeparators*/ false);
if (escapedValue >= 0) {
return String.fromCharCode(escapedValue);
@@ -1109,7 +1189,7 @@ namespace ts {
}
function scanExtendedUnicodeEscape(): string {
const escapedValue = scanMinimumNumberOfHexDigits(1);
const escapedValue = scanMinimumNumberOfHexDigits(1, /*canHaveSeparators*/ false);
let isInvalidExtendedEscape = false;
// Validate the value of the digit
@@ -1162,7 +1242,7 @@ namespace ts {
if (pos + 5 < end && text.charCodeAt(pos + 1) === CharacterCodes.u) {
const start = pos;
pos += 2;
const value = scanExactNumberOfHexDigits(4);
const value = scanExactNumberOfHexDigits(4, /*canHaveSeparators*/ false);
pos = start;
return value;
}
@@ -1218,8 +1298,27 @@ namespace ts {
// For counting number of digits; Valid binaryIntegerLiteral must have at least one binary digit following B or b.
// Similarly valid octalIntegerLiteral must have at least one octal digit following o or O.
let numberOfDigits = 0;
let separatorAllowed = false;
let isPreviousTokenSeparator = false;
while (true) {
const ch = text.charCodeAt(pos);
// Numeric seperators are allowed anywhere within a numeric literal, except not at the beginning, or following another separator
if (ch === CharacterCodes._) {
tokenFlags |= TokenFlags.ContainsSeparator;
if (separatorAllowed) {
separatorAllowed = false;
isPreviousTokenSeparator = true;
}
else if (isPreviousTokenSeparator) {
error(Diagnostics.Multiple_consecutive_numeric_separators_are_not_permitted, pos, 1);
}
else {
error(Diagnostics.Numeric_separators_are_not_allowed_here, pos, 1);
}
pos++;
continue;
}
separatorAllowed = true;
const valueOfCh = ch - CharacterCodes._0;
if (!isDigit(ch) || valueOfCh >= base) {
break;
@@ -1227,11 +1326,17 @@ namespace ts {
value = value * base + valueOfCh;
pos++;
numberOfDigits++;
isPreviousTokenSeparator = false;
}
// Invalid binaryIntegerLiteral or octalIntegerLiteral
if (numberOfDigits === 0) {
return -1;
}
if (text.charCodeAt(pos - 1) === CharacterCodes._) {
// Literal ends with underscore - not allowed
error(Diagnostics.Numeric_separators_are_not_allowed_here, pos - 1, 1);
return value;
}
return value;
}
@@ -1435,7 +1540,7 @@ namespace ts {
case CharacterCodes._0:
if (pos + 2 < end && (text.charCodeAt(pos + 1) === CharacterCodes.X || text.charCodeAt(pos + 1) === CharacterCodes.x)) {
pos += 2;
let value = scanMinimumNumberOfHexDigits(1);
let value = scanMinimumNumberOfHexDigits(1, /*canHaveSeparators*/ true);
if (value < 0) {
error(Diagnostics.Hexadecimal_digit_expected);
value = 0;
@@ -1489,7 +1594,7 @@ namespace ts {
return token = SyntaxKind.NumericLiteral;
case CharacterCodes.colon:
pos++;
return token = SyntaxKind.ColonToken;
return token = SyntaxKind.ColonToken;
case CharacterCodes.semicolon:
pos++;
return token = SyntaxKind.SemicolonToken;
+1 -1
View File
@@ -420,7 +420,7 @@ namespace ts {
host.getCanonicalFileName,
/*isAbsolutePathAnUrl*/ true);
sourceMapSourceIndex = indexOf(sourceMapData.sourceMapSources, source);
sourceMapSourceIndex = sourceMapData.sourceMapSources.indexOf(source);
if (sourceMapSourceIndex === -1) {
sourceMapSourceIndex = sourceMapData.sourceMapSources.length;
sourceMapData.sourceMapSources.push(source);
+1 -1
View File
@@ -968,7 +968,7 @@ namespace ts {
name: "typescript:asyncValues",
scoped: false,
text: `
var __asyncValues = (this && this.__asyncIterator) || function (o) {
var __asyncValues = (this && this.__asyncValues) || function (o) {
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
var m = o[Symbol.asyncIterator];
return m ? m.call(o) : typeof __values === "function" ? __values(o) : o[Symbol.iterator]();
+2 -2
View File
@@ -3190,8 +3190,8 @@ namespace ts {
// `throw` methods that step through the generator when invoked.
//
// parameters:
// thisArg The value to use as the `this` binding for the transformed generator body.
// body A function that acts as the transformed generator body.
// @param thisArg The value to use as the `this` binding for the transformed generator body.
// @param body A function that acts as the transformed generator body.
//
// variables:
// _ Persistent state for the generator that is shared between the helper and the
+1 -1
View File
@@ -81,7 +81,7 @@ namespace ts {
let classAliases: Identifier[];
/**
* Keeps track of whether we are within any containing namespaces when performing
* Keeps track of whether we are within any containing namespaces when performing
* just-in-time substitution while printing an expression identifier.
*/
let applicableSubstitutions: TypeScriptSubstitutionFlags;
+6 -2
View File
@@ -158,8 +158,12 @@ namespace ts {
};
}
function createWatchStatusReporter(options: CompilerOptions) {
return ts.createWatchStatusReporter(sys, !!options.pretty);
}
function createWatchOfConfigFile(configParseResult: ParsedCommandLine, optionsToExtend: CompilerOptions) {
const watchCompilerHost = ts.createWatchCompilerHostOfConfigFile(configParseResult.options.configFilePath, optionsToExtend, sys, reportDiagnostic);
const watchCompilerHost = ts.createWatchCompilerHostOfConfigFile(configParseResult.options.configFilePath, optionsToExtend, sys, reportDiagnostic, createWatchStatusReporter(configParseResult.options));
updateWatchCompilationHost(watchCompilerHost);
watchCompilerHost.rootFiles = configParseResult.fileNames;
watchCompilerHost.options = configParseResult.options;
@@ -169,7 +173,7 @@ namespace ts {
}
function createWatchOfFilesAndCompilerOptions(rootFiles: string[], options: CompilerOptions) {
const watchCompilerHost = ts.createWatchCompilerHostOfFilesAndCompilerOptions(rootFiles, options, sys, reportDiagnostic);
const watchCompilerHost = ts.createWatchCompilerHostOfFilesAndCompilerOptions(rootFiles, options, sys, reportDiagnostic, createWatchStatusReporter(options));
updateWatchCompilationHost(watchCompilerHost);
createWatchProgram(watchCompilerHost);
}
+103 -46
View File
@@ -438,24 +438,24 @@ namespace ts {
}
export const enum NodeFlags {
None = 0,
Let = 1 << 0, // Variable declaration
Const = 1 << 1, // Variable declaration
NestedNamespace = 1 << 2, // Namespace declaration
Synthesized = 1 << 3, // Node was synthesized during transformation
Namespace = 1 << 4, // Namespace declaration
ExportContext = 1 << 5, // Export context (initialized by binding)
ContainsThis = 1 << 6, // Interface contains references to "this"
HasImplicitReturn = 1 << 7, // If function implicitly returns on one of codepaths (initialized by binding)
HasExplicitReturn = 1 << 8, // If function has explicit reachable return on one of codepaths (initialized by binding)
None = 0,
Let = 1 << 0, // Variable declaration
Const = 1 << 1, // Variable declaration
NestedNamespace = 1 << 2, // Namespace declaration
Synthesized = 1 << 3, // Node was synthesized during transformation
Namespace = 1 << 4, // Namespace declaration
ExportContext = 1 << 5, // Export context (initialized by binding)
ContainsThis = 1 << 6, // Interface contains references to "this"
HasImplicitReturn = 1 << 7, // If function implicitly returns on one of codepaths (initialized by binding)
HasExplicitReturn = 1 << 8, // If function has explicit reachable return on one of codepaths (initialized by binding)
GlobalAugmentation = 1 << 9, // Set if module declaration is an augmentation for the global scope
HasAsyncFunctions = 1 << 10, // If the file has async functions (initialized by binding)
DisallowInContext = 1 << 11, // If node was parsed in a context where 'in-expressions' are not allowed
YieldContext = 1 << 12, // If node was parsed in the 'yield' context created when parsing a generator
DecoratorContext = 1 << 13, // If node was parsed as part of a decorator
AwaitContext = 1 << 14, // If node was parsed in the 'await' context created when parsing an async function
ThisNodeHasError = 1 << 15, // If the parser encountered an error when parsing the code that created this node
JavaScriptFile = 1 << 16, // If node was parsed in a JavaScript
HasAsyncFunctions = 1 << 10, // If the file has async functions (initialized by binding)
DisallowInContext = 1 << 11, // If node was parsed in a context where 'in-expressions' are not allowed
YieldContext = 1 << 12, // If node was parsed in the 'yield' context created when parsing a generator
DecoratorContext = 1 << 13, // If node was parsed as part of a decorator
AwaitContext = 1 << 14, // If node was parsed in the 'await' context created when parsing an async function
ThisNodeHasError = 1 << 15, // If the parser encountered an error when parsing the code that created this node
JavaScriptFile = 1 << 16, // If node was parsed in a JavaScript
ThisNodeOrAnySubNodesHasError = 1 << 17, // If this node or any of its children had an error
HasAggregatedChildData = 1 << 18, // If we've computed data from children and cached it in this node
@@ -584,6 +584,40 @@ namespace ts {
| JSDocFunctionType
| EndOfFileToken;
export type HasType =
| SignatureDeclaration
| VariableDeclaration
| ParameterDeclaration
| PropertySignature
| PropertyDeclaration
| TypePredicateNode
| ParenthesizedTypeNode
| TypeOperatorNode
| MappedTypeNode
| AssertionExpression
| TypeAliasDeclaration
| JSDocTypeExpression
| JSDocNonNullableType
| JSDocNullableType
| JSDocOptionalType
| JSDocVariadicType;
export type HasInitializer =
| HasExpressionInitializer
| ForStatement
| ForInStatement
| ForOfStatement
| JsxAttribute;
export type HasExpressionInitializer =
| VariableDeclaration
| ParameterDeclaration
| BindingElement
| PropertySignature
| PropertyDeclaration
| PropertyAssignment
| EnumMember;
/* @internal */
export type MutableNodeArray<T extends Node> = NodeArray<T> & T[];
@@ -793,6 +827,9 @@ namespace ts {
initializer?: Expression; // Optional initializer
}
/*@internal*/
export type BindingElementGrandparent = BindingElement["parent"]["parent"];
export interface PropertySignature extends TypeElement, JSDocContainer {
kind: SyntaxKind.PropertySignature;
name: PropertyName; // Declared property name
@@ -848,25 +885,18 @@ namespace ts {
expression: Expression;
}
// SyntaxKind.VariableDeclaration
// SyntaxKind.Parameter
// SyntaxKind.BindingElement
// SyntaxKind.Property
// SyntaxKind.PropertyAssignment
// SyntaxKind.JsxAttribute
// SyntaxKind.ShorthandPropertyAssignment
// SyntaxKind.EnumMember
// SyntaxKind.JSDocPropertyTag
// SyntaxKind.JSDocParameterTag
export interface VariableLikeDeclaration extends NamedDeclaration {
propertyName?: PropertyName;
dotDotDotToken?: DotDotDotToken;
name: DeclarationName;
questionToken?: QuestionToken;
exclamationToken?: ExclamationToken;
type?: TypeNode;
initializer?: Expression;
}
export type VariableLikeDeclaration =
| VariableDeclaration
| ParameterDeclaration
| BindingElement
| PropertyDeclaration
| PropertyAssignment
| PropertySignature
| JsxAttribute
| ShorthandPropertyAssignment
| EnumMember
| JSDocPropertyTag
| JSDocParameterTag;
export interface PropertyLikeDeclaration extends NamedDeclaration {
name: PropertyName;
@@ -1364,7 +1394,7 @@ namespace ts {
export type BinaryOperatorToken = Token<BinaryOperator>;
export interface BinaryExpression extends Expression, Declaration {
export interface BinaryExpression extends Expression, Declaration {
kind: SyntaxKind.BinaryExpression;
left: Expression;
operatorToken: BinaryOperatorToken;
@@ -1490,8 +1520,9 @@ namespace ts {
HexSpecifier = 1 << 6, // e.g. `0x00000000`
BinarySpecifier = 1 << 7, // e.g. `0b0110010000000000`
OctalSpecifier = 1 << 8, // e.g. `0o777`
ContainsSeparator = 1 << 9, // e.g. `0b1100_0101`
BinaryOrOctalSpecifier = BinarySpecifier | OctalSpecifier,
NumericLiteralFlags = Scientific | Octal | HexSpecifier | BinarySpecifier | OctalSpecifier
NumericLiteralFlags = Scientific | Octal | HexSpecifier | BinarySpecifier | OctalSpecifier | ContainsSeparator
}
export interface NumericLiteral extends LiteralExpression {
@@ -2509,7 +2540,7 @@ namespace ts {
export interface ParseConfigHost {
useCaseSensitiveFileNames: boolean;
readDirectory(rootDir: string, extensions: ReadonlyArray<string>, excludes: ReadonlyArray<string>, includes: ReadonlyArray<string>, depth: number): string[];
readDirectory(rootDir: string, extensions: ReadonlyArray<string>, excludes: ReadonlyArray<string> | undefined, includes: ReadonlyArray<string>, depth?: number): string[];
/**
* Gets a value indicating whether the specified path exists and is a file.
@@ -2738,6 +2769,8 @@ namespace ts {
getAugmentedPropertiesOfType(type: Type): Symbol[];
getRootSymbols(symbol: Symbol): Symbol[];
getContextualType(node: Expression): Type | undefined;
/* @internal */ isContextSensitive(node: Expression | MethodDeclaration | ObjectLiteralElementLike | JsxAttributeLike): boolean;
/**
* returns unknownSignature in the case of an error.
* @param argumentCount Apparent number of arguments, passed in case of a possibly incomplete call. This should come from an ArgumentListInfo. See `signatureHelp.ts`.
@@ -2752,6 +2785,8 @@ namespace ts {
getConstantValue(node: EnumMember | PropertyAccessExpression | ElementAccessExpression): string | number | undefined;
isValidPropertyAccess(node: PropertyAccessExpression | QualifiedName, propertyName: string): boolean;
/** Exclude accesses to private properties or methods with a `this` parameter that `type` doesn't satisfy. */
/* @internal */ isValidPropertyAccessForCompletions(node: PropertyAccessExpression, type: Type, property: Symbol): boolean;
/** Follow all aliases to get the original symbol. */
getAliasedSymbol(symbol: Symbol): Symbol;
/** Follow a *single* alias to get the immediately aliased symbol. */
@@ -2786,7 +2821,7 @@ namespace ts {
/* @internal */ getNullType(): Type;
/* @internal */ getESSymbolType(): Type;
/* @internal */ getNeverType(): Type;
/* @internal */ getUnionType(types: Type[], subtypeReduction?: boolean): Type;
/* @internal */ getUnionType(types: Type[], subtypeReduction?: UnionReduction): Type;
/* @internal */ createArrayType(elementType: Type): Type;
/* @internal */ createPromiseType(type: Type): Type;
@@ -2841,6 +2876,13 @@ namespace ts {
/* @internal */ getAccessibleSymbolChain(symbol: Symbol, enclosingDeclaration: Node | undefined, meaning: SymbolFlags, useOnlyExternalAliasing: boolean): Symbol[] | undefined;
}
/* @internal */
export const enum UnionReduction {
None = 0,
Literal,
Subtype
}
export enum NodeBuilderFlags {
None = 0,
// Options
@@ -2935,9 +2977,9 @@ namespace ts {
None = 0x00000000,
// Write symbols's type argument if it is instantiated symbol
// eg. class C<T> { p: T } <-- Show p as C<T>.p here
// eg. class C<T> { p: T } <-- Show p as C<T>.p here
// var a: C<number>;
// var p = a.p; <--- Here p is property of C<number> so show it as C<number>.p instead of just C.p
// var p = a.p; <--- Here p is property of C<number> so show it as C<number>.p instead of just C.p
WriteTypeParametersOrArguments = 0x00000001,
// Use only external alias information to get the symbol name in the given context
@@ -3209,6 +3251,7 @@ namespace ts {
ContainsPrivate = 1 << 8, // Synthetic property with private constituent(s)
ContainsStatic = 1 << 9, // Synthetic property with static constituent(s)
Late = 1 << 10, // Late-bound symbol for a computed property with a dynamic name
ReverseMapped = 1 << 11, // property of reverse-inferred homomorphic mapped type.
Synthetic = SyntheticProperty | SyntheticMethod
}
@@ -3218,6 +3261,12 @@ namespace ts {
isRestParameter?: boolean;
}
/* @internal */
export interface ReverseMappedSymbol extends TransientSymbol {
propertyType: Type;
mappedType: MappedType;
}
export const enum InternalSymbolName {
Call = "__call", // Call signatures
Constructor = "__constructor", // Constructor implementations
@@ -3323,7 +3372,7 @@ namespace ts {
resolvedJsxElementAttributesType?: Type; // resolved element attributes type of a JSX openinglike element
resolvedJsxElementAllAttributesType?: Type; // resolved all element attributes type of a JSX openinglike element
hasSuperCall?: boolean; // recorded result when we try to find super-call. We only try to find one if this flag is undefined, indicating that we haven't made an attempt.
superCall?: ExpressionStatement; // Cached first super-call found in the constructor. Used in checking whether super is called before this-accessing
superCall?: SuperCall; // Cached first super-call found in the constructor. Used in checking whether super is called before this-accessing
switchTypes?: Type[]; // Cached array of switch case expression types
}
@@ -3452,6 +3501,7 @@ namespace ts {
EvolvingArray = 1 << 8, // Evolving array type
ObjectLiteralPatternWithComputedProperties = 1 << 9, // Object literal pattern with computed properties
ContainsSpread = 1 << 10, // Object literal contains spread operation
ReverseMapped = 1 << 11, // Object contains a property from a reverse-mapped type
ClassOrInterface = Class | Interface
}
@@ -3559,6 +3609,12 @@ namespace ts {
finalArrayType?: Type; // Final array type of evolving array type
}
/* @internal */
export interface ReverseMappedType extends ObjectType {
source: Type;
mappedType: MappedType;
}
/* @internal */
// Resolved object, union, or intersection type
export interface ResolvedType extends ObjectType, UnionOrIntersectionType {
@@ -3572,7 +3628,7 @@ namespace ts {
/* @internal */
// Object literals are initially marked fresh. Freshness disappears following an assignment,
// before a type assertion, or when an object literal's type is widened. The regular
// before a type assertion, or when an object literal's type is widened. The regular
// version of a fresh type is identical except for the TypeFlags.FreshObjectLiteral flag.
export interface FreshObjectLiteralType extends ResolvedType {
regularType: ResolvedType; // Regular version of fresh type
@@ -4324,11 +4380,12 @@ namespace ts {
* If resolveModuleNames is implemented then implementation for members from ModuleResolutionHost can be just
* 'throw new Error("NotImplemented")'
*/
resolveModuleNames?(moduleNames: string[], containingFile: string, reusedNames?: string[]): ResolvedModule[];
resolveModuleNames?(moduleNames: string[], containingFile: string, reusedNames?: string[]): (ResolvedModule | undefined)[];
/**
* This method is a companion for 'resolveModuleNames' and is used to resolve 'types' references to actual type declaration files
*/
resolveTypeReferenceDirectives?(typeReferenceDirectiveNames: string[], containingFile: string): ResolvedTypeReferenceDirective[];
resolveTypeReferenceDirectives?(typeReferenceDirectiveNames: string[], containingFile: string): (ResolvedTypeReferenceDirective | undefined)[];
getEnvironmentVariable?(name: string): string;
/* @internal */ onReleaseOldSourceFile?(oldSourceFile: SourceFile, oldOptions: CompilerOptions): void;
/* @internal */ hasInvalidatedResolution?: HasInvalidatedResolution;
/* @internal */ hasChangedAutomaticTypeDirectiveNames?: boolean;
+42 -11
View File
@@ -3,6 +3,7 @@
/* @internal */
namespace ts {
export const emptyArray: never[] = [] as never[];
export const resolvingEmptyArray: never[] = [] as never[];
export const emptyMap: ReadonlyMap<never> = createMap<never>();
export const externalHelpersModuleNameText = "tslib";
@@ -346,7 +347,7 @@ namespace ts {
export function getLiteralText(node: LiteralLikeNode, sourceFile: SourceFile) {
// If we don't need to downlevel and we can reach the original source text using
// the node's parent reference, then simply get the text as it was originally written.
if (!nodeIsSynthesized(node) && node.parent) {
if (!nodeIsSynthesized(node) && node.parent && !(isNumericLiteral(node) && node.numericLiteralFlags & TokenFlags.ContainsSeparator)) {
return getSourceTextOfNodeFromSourceFile(sourceFile, node);
}
@@ -548,7 +549,7 @@ namespace ts {
// Return display name of an identifier
// Computed property names will just be emitted as "[<expr>]", where <expr> is the source
// text of the expression in the computed property.
export function declarationNameToString(name: DeclarationName) {
export function declarationNameToString(name: DeclarationName | QualifiedName) {
return getFullWidth(name) === 0 ? "(Missing)" : getTextOfNode(name);
}
@@ -784,7 +785,7 @@ namespace ts {
case SyntaxKind.PropertySignature:
case SyntaxKind.Parameter:
case SyntaxKind.VariableDeclaration:
return node === (<VariableLikeDeclaration>parent).type;
return node === (parent as HasType).type;
case SyntaxKind.FunctionDeclaration:
case SyntaxKind.FunctionExpression:
case SyntaxKind.ArrowFunction:
@@ -802,7 +803,7 @@ namespace ts {
return node === (<TypeAssertion>parent).type;
case SyntaxKind.CallExpression:
case SyntaxKind.NewExpression:
return (<CallExpression>parent).typeArguments && indexOf((<CallExpression>parent).typeArguments, node) >= 0;
return contains((<CallExpression>parent).typeArguments, node);
case SyntaxKind.TaggedTemplateExpression:
// TODO (drosen): TaggedTemplateExpressions may eventually support type arguments.
return false;
@@ -1340,7 +1341,7 @@ namespace ts {
case SyntaxKind.EnumMember:
case SyntaxKind.PropertyAssignment:
case SyntaxKind.BindingElement:
return (<VariableLikeDeclaration>parent).initializer === node;
return (parent as HasInitializer).initializer === node;
case SyntaxKind.ExpressionStatement:
case SyntaxKind.IfStatement:
case SyntaxKind.DoStatement:
@@ -1650,7 +1651,7 @@ namespace ts {
result = addRange(result, getJSDocParameterTags(node as ParameterDeclaration));
}
if (isVariableLike(node) && node.initializer && hasJSDocNodes(node.initializer)) {
if (isVariableLike(node) && hasInitializer(node) && hasJSDocNodes(node.initializer)) {
result = addRange(result, node.initializer.jsDoc);
}
@@ -2816,8 +2817,8 @@ namespace ts {
* Gets the effective type annotation of a variable, parameter, or property. If the node was
* parsed in a JavaScript file, gets the type annotation from JSDoc.
*/
export function getEffectiveTypeAnnotationNode(node: VariableLikeDeclaration, checkJSDoc?: boolean): TypeNode | undefined {
if (node.type) {
export function getEffectiveTypeAnnotationNode(node: Node, checkJSDoc?: boolean): TypeNode | undefined {
if (hasType(node)) {
return node.type;
}
if (checkJSDoc || isInJavaScriptFile(node)) {
@@ -3916,8 +3917,8 @@ namespace ts {
//
// {
// oldStart3: Min(oldStart1, oldStart2),
// oldEnd3 : Max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1)),
// newEnd3 : Max(newEnd2, newEnd2 + (newEnd1 - oldEnd2))
// oldEnd3: Max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1)),
// newEnd3: Max(newEnd2, newEnd2 + (newEnd1 - oldEnd2))
// }
const oldStart1 = oldStartN;
@@ -4402,7 +4403,7 @@ namespace ts {
return node.kind === SyntaxKind.RegularExpressionLiteral;
}
export function isNoSubstitutionTemplateLiteral(node: Node): node is LiteralExpression {
export function isNoSubstitutionTemplateLiteral(node: Node): node is NoSubstitutionTemplateLiteral {
return node.kind === SyntaxKind.NoSubstitutionTemplateLiteral;
}
@@ -5233,6 +5234,18 @@ namespace ts {
return node && (node.kind === SyntaxKind.GetAccessor || node.kind === SyntaxKind.SetAccessor);
}
/* @internal */
export function isMethodOrAccessor(node: Node): node is MethodDeclaration | AccessorDeclaration {
switch (node.kind) {
case SyntaxKind.MethodDeclaration:
case SyntaxKind.GetAccessor:
case SyntaxKind.SetAccessor:
return true;
default:
return false;
}
}
// Type members
export function isTypeElement(node: Node): node is TypeElement {
@@ -5812,4 +5825,22 @@ namespace ts {
export function hasJSDocNodes(node: Node): node is HasJSDoc {
return !!(node as JSDocContainer).jsDoc && (node as JSDocContainer).jsDoc.length > 0;
}
/** True if has type node attached to it. */
/* @internal */
export function hasType(node: Node): node is HasType {
return !!(node as HasType).type;
}
/** True if has initializer node attached to it. */
/* @internal */
export function hasInitializer(node: Node): node is HasInitializer {
return !!(node as HasInitializer).initializer;
}
/** True if has initializer node attached to it. */
/* @internal */
export function hasOnlyExpressionInitializer(node: Node): node is HasExpressionInitializer {
return hasInitializer(node) && !isForStatement(node) && !isForInStatement(node) && !isForOfStatement(node) && !isJsxAttribute(node);
}
}
+41 -18
View File
@@ -31,6 +31,31 @@ namespace ts {
};
}
function clearScreenIfNotWatchingForFileChanges(system: System, diagnostic: Diagnostic) {
if (system.clearScreen && diagnostic.code !== Diagnostics.Compilation_complete_Watching_for_file_changes.code) {
system.clearScreen();
}
}
/**
* Create a function that reports watch status by writing to the system and handles the formating of the diagnostic
*/
export function createWatchStatusReporter(system: System, pretty?: boolean): WatchStatusReporter {
return pretty ?
(diagnostic: Diagnostic, newLine: string) => {
clearScreenIfNotWatchingForFileChanges(system, diagnostic);
let output = `[${ formatColorAndReset(new Date().toLocaleTimeString(), ForegroundColorEscapeSequences.Grey) }] `;
output += `${flattenDiagnosticMessageText(diagnostic.messageText, system.newLine)}${newLine + newLine + newLine}`;
system.write(output);
} :
(diagnostic: Diagnostic, newLine: string) => {
clearScreenIfNotWatchingForFileChanges(system, diagnostic);
let output = new Date().toLocaleTimeString() + " - ";
output += `${flattenDiagnosticMessageText(diagnostic.messageText, system.newLine)}${newLine + newLine + newLine}`;
system.write(output);
};
}
/**
* Interface extending ParseConfigHost to support ParseConfigFile that reads config file and reports errors
*/
@@ -151,7 +176,7 @@ namespace ts {
/**
* Creates the watch compiler host that can be extended with config file or root file names and options host
*/
function createWatchCompilerHost(system = sys, reportDiagnostic: DiagnosticReporter): WatchCompilerHost {
function createWatchCompilerHost(system = sys, reportDiagnostic: DiagnosticReporter, reportWatchStatus?: WatchStatusReporter): WatchCompilerHost {
let host: DirectoryStructureHost = system;
const useCaseSensitiveFileNames = () => system.useCaseSensitiveFileNames;
const writeFileName = (s: string) => system.write(s + system.newLine);
@@ -173,12 +198,13 @@ namespace ts {
getDirectories: path => system.getDirectories(path),
readDirectory: (path, extensions, exclude, include, depth) => system.readDirectory(path, extensions, exclude, include, depth),
realpath: system.realpath && (path => system.realpath(path)),
getEnvironmentVariable: system.getEnvironmentVariable && (name => system.getEnvironmentVariable(name)),
watchFile: system.watchFile ? ((path, callback, pollingInterval) => system.watchFile(path, callback, pollingInterval)) : () => noopFileWatcher,
watchDirectory: system.watchDirectory ? ((path, callback, recursive) => system.watchDirectory(path, callback, recursive)) : () => noopFileWatcher,
setTimeout: system.setTimeout ? ((callback, ms, ...args: any[]) => system.setTimeout.call(system, callback, ms, ...args)) : noop,
clearTimeout: system.clearTimeout ? (timeoutId => system.clearTimeout(timeoutId)) : noop,
trace: s => system.write(s),
onWatchStatusChange,
onWatchStatusChange: reportWatchStatus || createWatchStatusReporter(system),
createDirectory: path => system.createDirectory(path),
writeFile: (path, data, writeByteOrderMark) => system.writeFile(path, data, writeByteOrderMark),
onCachedDirectoryStructureHostCreate: cacheHost => host = cacheHost || system,
@@ -189,13 +215,6 @@ namespace ts {
return getDirectoryPath(normalizePath(system.getExecutingFilePath()));
}
function onWatchStatusChange(diagnostic: Diagnostic, newLine: string) {
if (system.clearScreen && diagnostic.code !== Diagnostics.Compilation_complete_Watching_for_file_changes.code) {
system.clearScreen();
}
system.write(`${new Date().toLocaleTimeString()} - ${flattenDiagnosticMessageText(diagnostic.messageText, newLine)}${newLine + newLine + newLine}`);
}
function emitFilesAndReportErrorUsingBuilder(program: Program) {
builderProgram = createEmitAndSemanticDiagnosticsBuilderProgram(program, builderProgramHost, builderProgram);
emitFilesAndReportErrors(builderProgram, reportDiagnostic, writeFileName);
@@ -238,9 +257,9 @@ namespace ts {
/**
* Creates the watch compiler host from system for config file in watch mode
*/
export function createWatchCompilerHostOfConfigFile(configFileName: string, optionsToExtend: CompilerOptions | undefined, system: System, reportDiagnostic: DiagnosticReporter | undefined): WatchCompilerHostOfConfigFile {
export function createWatchCompilerHostOfConfigFile(configFileName: string, optionsToExtend: CompilerOptions | undefined, system: System, reportDiagnostic: DiagnosticReporter | undefined, reportWatchStatus: WatchStatusReporter | undefined): WatchCompilerHostOfConfigFile {
reportDiagnostic = reportDiagnostic || createDiagnosticReporter(system);
const host = createWatchCompilerHost(system, reportDiagnostic) as WatchCompilerHostOfConfigFile;
const host = createWatchCompilerHost(system, reportDiagnostic, reportWatchStatus) as WatchCompilerHostOfConfigFile;
host.onConfigFileDiagnostic = reportDiagnostic;
host.onUnRecoverableConfigFileDiagnostic = diagnostic => reportUnrecoverableDiagnostic(system, reportDiagnostic, diagnostic);
host.configFileName = configFileName;
@@ -251,8 +270,8 @@ namespace ts {
/**
* Creates the watch compiler host from system for compiling root files and options in watch mode
*/
export function createWatchCompilerHostOfFilesAndCompilerOptions(rootFiles: string[], options: CompilerOptions, system: System, reportDiagnostic: DiagnosticReporter | undefined): WatchCompilerHostOfFilesAndCompilerOptions {
const host = createWatchCompilerHost(system, reportDiagnostic || createDiagnosticReporter(system)) as WatchCompilerHostOfFilesAndCompilerOptions;
export function createWatchCompilerHostOfFilesAndCompilerOptions(rootFiles: string[], options: CompilerOptions, system: System, reportDiagnostic: DiagnosticReporter | undefined, reportWatchStatus: WatchStatusReporter | undefined): WatchCompilerHostOfFilesAndCompilerOptions {
const host = createWatchCompilerHost(system, reportDiagnostic || createDiagnosticReporter(system), reportWatchStatus) as WatchCompilerHostOfFilesAndCompilerOptions;
host.rootFiles = rootFiles;
host.options = options;
return host;
@@ -261,6 +280,7 @@ namespace ts {
namespace ts {
export type DiagnosticReporter = (diagnostic: Diagnostic) => void;
export type WatchStatusReporter = (diagnostic: Diagnostic, newLine: string) => void;
export interface WatchCompilerHost {
/** If provided, callback to invoke before each program creation */
@@ -299,11 +319,13 @@ namespace ts {
realpath?(path: string): string;
/** If provided would be used to write log about compilation */
trace?(s: string): void;
/** If provided is used to get the environment variable */
getEnvironmentVariable?(name: string): string;
/** If provided, used to resolve the module names, otherwise typescript's default module resolution */
resolveModuleNames?(moduleNames: string[], containingFile: string, reusedNames?: string[]): ResolvedModule[];
/** If provided, used to resolve type reference directives, otherwise typescript's default resolution */
resolveTypeReferenceDirectives?(typeReferenceDirectiveNames: string[], containingFile: string): ResolvedTypeReferenceDirective[];
resolveTypeReferenceDirectives?(typeReferenceDirectiveNames: string[], containingFile: string): (ResolvedTypeReferenceDirective | undefined)[];
/** Used to watch changes in source files, missing files needed to update the program or config file */
watchFile(path: string, callback: FileWatcherCallback, pollingInterval?: number): FileWatcher;
@@ -403,15 +425,15 @@ namespace ts {
/**
* Create the watched program for config file
*/
export function createWatchOfConfigFile(configFileName: string, optionsToExtend?: CompilerOptions, system = sys, reportDiagnostic?: DiagnosticReporter): WatchOfConfigFile<Program> {
return createWatchProgram(createWatchCompilerHostOfConfigFile(configFileName, optionsToExtend, system, reportDiagnostic));
export function createWatchOfConfigFile(configFileName: string, optionsToExtend?: CompilerOptions, system = sys, reportDiagnostic?: DiagnosticReporter, reportWatchStatus?: WatchStatusReporter): WatchOfConfigFile<Program> {
return createWatchProgram(createWatchCompilerHostOfConfigFile(configFileName, optionsToExtend, system, reportDiagnostic, reportWatchStatus));
}
/**
* Create the watched program for root files and compiler options
*/
export function createWatchOfFilesAndCompilerOptions(rootFiles: string[], options: CompilerOptions, system = sys, reportDiagnostic?: DiagnosticReporter): WatchOfFilesAndCompilerOptions<Program> {
return createWatchProgram(createWatchCompilerHostOfFilesAndCompilerOptions(rootFiles, options, system, reportDiagnostic));
export function createWatchOfFilesAndCompilerOptions(rootFiles: string[], options: CompilerOptions, system = sys, reportDiagnostic?: DiagnosticReporter, reportWatchStatus?: WatchStatusReporter): WatchOfFilesAndCompilerOptions<Program> {
return createWatchProgram(createWatchCompilerHostOfFilesAndCompilerOptions(rootFiles, options, system, reportDiagnostic, reportWatchStatus));
}
/**
@@ -498,6 +520,7 @@ namespace ts {
directoryExists: directoryStructureHost.directoryExists && (path => directoryStructureHost.directoryExists(path)),
getDirectories: directoryStructureHost.getDirectories && (path => directoryStructureHost.getDirectories(path)),
realpath: host.realpath && (s => host.realpath(s)),
getEnvironmentVariable: host.getEnvironmentVariable ? (name => host.getEnvironmentVariable(name)) : (() => ""),
onReleaseOldSourceFile,
// Members for ResolutionCacheHost
toPath,
+12 -4
View File
@@ -42,21 +42,29 @@ abstract class ExternalCompileRunnerBase extends RunnerBase {
const stdio = isWorker ? "pipe" : "inherit";
let types: string[];
if (fs.existsSync(path.join(cwd, "test.json"))) {
const update = cp.spawnSync("git", ["submodule", "update", "--remote"], { cwd, timeout, shell: true, stdio });
if (update.status !== 0) throw new Error(`git submodule update for ${directoryName} failed!`);
const submoduleDir = path.join(cwd, directoryName);
const reset = cp.spawnSync("git", ["reset", "HEAD", "--hard"], { cwd: submoduleDir, timeout, shell: true, stdio });
if (reset.status !== 0) throw new Error(`git reset for ${directoryName} failed: ${reset.stderr.toString()}`);
const clean = cp.spawnSync("git", ["clean", "-f"], { cwd: submoduleDir, timeout, shell: true, stdio });
if (clean.status !== 0) throw new Error(`git clean for ${directoryName} failed: ${clean.stderr.toString()}`);
const update = cp.spawnSync("git", ["submodule", "update", "--remote", "."], { cwd: submoduleDir, timeout, shell: true, stdio });
if (update.status !== 0) throw new Error(`git submodule update for ${directoryName} failed: ${update.stderr.toString()}`);
const config = JSON.parse(fs.readFileSync(path.join(cwd, "test.json"), { encoding: "utf8" })) as UserConfig;
ts.Debug.assert(!!config.types, "Bad format from test.json: Types field must be present.");
types = config.types;
cwd = path.join(cwd, directoryName);
cwd = submoduleDir;
}
if (fs.existsSync(path.join(cwd, "package.json"))) {
if (fs.existsSync(path.join(cwd, "package-lock.json"))) {
fs.unlinkSync(path.join(cwd, "package-lock.json"));
}
if (fs.existsSync(path.join(cwd, "node_modules"))) {
require("del").sync(path.join(cwd, "node_modules"));
}
const install = cp.spawnSync(`npm`, ["i"], { cwd, timeout, shell: true, stdio });
if (install.status !== 0) throw new Error(`NPM Install for ${directoryName} failed!`);
if (install.status !== 0) throw new Error(`NPM Install for ${directoryName} failed: ${install.stderr.toString()}`);
}
const args = [path.join(__dirname, "tsc.js")];
if (types) {
+36 -21
View File
@@ -297,7 +297,7 @@ namespace FourSlash {
const host = new Utils.MockParseConfigHost(baseDir, /*ignoreCase*/ false, this.inputFiles);
const configJsonObj = ts.parseConfigFileTextToJson(configFileName, this.inputFiles.get(configFileName));
assert(configJsonObj.config !== undefined);
assert.isTrue(configJsonObj.config !== undefined);
const { options, errors } = ts.parseJsonConfigFileContent(configJsonObj.config, host, baseDir);
@@ -441,18 +441,17 @@ namespace FourSlash {
this.goToPosition(marker.position);
}
public goToEachMarker(action: () => void) {
const markers = this.getMarkers();
assert(markers.length !== 0);
for (const marker of markers) {
this.goToMarker(marker);
action();
public goToEachMarker(markers: ReadonlyArray<Marker>, action: (marker: FourSlash.Marker, index: number) => void) {
assert(markers.length);
for (let i = 0; i < markers.length; i++) {
this.goToMarker(markers[i]);
action(markers[i], i);
}
}
public goToEachRange(action: () => void) {
const ranges = this.getRanges();
assert(ranges.length !== 0);
assert(ranges.length);
for (const range of ranges) {
this.goToRangeStart(range);
action();
@@ -799,7 +798,7 @@ namespace FourSlash {
}
const entries = this.getCompletionListAtCaret().entries;
assert(items.length <= entries.length, `Amount of expected items in completion list [ ${items.length} ] is greater than actual number of items in list [ ${entries.length} ]`);
assert.isTrue(items.length <= entries.length, `Amount of expected items in completion list [ ${items.length} ] is greater than actual number of items in list [ ${entries.length} ]`);
ts.zipWith(entries, items, (entry, item) => {
assert.equal(entry.name, item, `Unexpected item in completion list`);
});
@@ -873,7 +872,7 @@ namespace FourSlash {
});
}
public verifyCompletionListContains(entryId: ts.Completions.CompletionEntryIdentifier, text?: string, documentation?: string, kind?: string, spanIndex?: number, hasAction?: boolean, options?: FourSlashInterface.VerifyCompletionListContainsOptions) {
public verifyCompletionListContains(entryId: ts.Completions.CompletionEntryIdentifier, text?: string, documentation?: string, kind?: string | { kind?: string, kindModifiers?: string }, spanIndex?: number, hasAction?: boolean, options?: FourSlashInterface.VerifyCompletionListContainsOptions) {
const completions = this.getCompletionListAtCaret(options);
if (completions) {
this.assertItemInCompletionList(completions.entries, entryId, text, documentation, kind, spanIndex, hasAction, options);
@@ -894,7 +893,7 @@ namespace FourSlash {
* @param expectedKind the kind of symbol (see ScriptElementKind)
* @param spanIndex the index of the range that the completion item's replacement text span should match
*/
public verifyCompletionListDoesNotContain(entryId: ts.Completions.CompletionEntryIdentifier, expectedText?: string, expectedDocumentation?: string, expectedKind?: string, spanIndex?: number, options?: FourSlashInterface.CompletionsAtOptions) {
public verifyCompletionListDoesNotContain(entryId: ts.Completions.CompletionEntryIdentifier, expectedText?: string, expectedDocumentation?: string, expectedKind?: string | { kind?: string, kindModifiers?: string }, spanIndex?: number, options?: FourSlashInterface.CompletionsAtOptions) {
let replacementSpan: ts.TextSpan;
if (spanIndex !== undefined) {
replacementSpan = this.getTextSpanForRangeAtIndex(spanIndex);
@@ -903,7 +902,7 @@ namespace FourSlash {
const completions = this.getCompletionListAtCaret(options);
if (completions) {
let filterCompletions = completions.entries.filter(e => e.name === entryId.name && e.source === entryId.source);
filterCompletions = expectedKind ? filterCompletions.filter(e => e.kind === expectedKind) : filterCompletions;
filterCompletions = expectedKind ? filterCompletions.filter(e => e.kind === expectedKind || (typeof expectedKind === "object" && e.kind === expectedKind.kind)) : filterCompletions;
filterCompletions = filterCompletions.filter(entry => {
const details = this.getCompletionEntryDetails(entry.name);
const documentation = details && ts.displayPartsToString(details.documentation);
@@ -953,7 +952,7 @@ namespace FourSlash {
public verifyCompletionEntryDetails(entryName: string, expectedText: string, expectedDocumentation?: string, kind?: string, tags?: ts.JSDocTagInfo[]) {
const details = this.getCompletionEntryDetails(entryName);
assert.isDefined(details, "no completion entry available");
assert(details, "no completion entry available");
assert.equal(ts.displayPartsToString(details.displayParts), expectedText, this.assertionMessageAtLastKnownMarker("completion entry details text"));
@@ -1088,7 +1087,7 @@ namespace FourSlash {
public verifyRangesReferenceEachOther(ranges?: Range[]) {
ranges = ranges || this.getRanges();
assert(ranges.length !== 0);
assert(ranges.length);
for (const range of ranges) {
this.verifyReferencesOf(range, ranges);
}
@@ -1374,6 +1373,7 @@ Actual: ${stringify(fullActual)}`);
public verifyCurrentParameterIsVariable(isVariable: boolean) {
const signature = this.getActiveSignatureHelpItem();
assert.isOk(signature);
assert.equal(isVariable, signature.isVariadic);
}
@@ -2024,7 +2024,7 @@ Actual: ${stringify(fullActual)}`);
const implementations = this.languageService.getImplementationAtPosition(this.activeFile.fileName, this.currentCaretPosition);
if (negative) {
assert(implementations && implementations.length > 0, "Expected at least one implementation but got 0");
assert.isTrue(implementations && implementations.length > 0, "Expected at least one implementation but got 0");
}
else {
assert.isUndefined(implementations, "Expected implementation list to be empty but implementations returned");
@@ -3089,7 +3089,7 @@ Actual: ${stringify(fullActual)}`);
entryId: ts.Completions.CompletionEntryIdentifier,
text: string | undefined,
documentation: string | undefined,
kind: string | undefined,
kind: string | undefined | { kind?: string, kindModifiers?: string },
spanIndex: number | undefined,
hasAction: boolean | undefined,
options: FourSlashInterface.VerifyCompletionListContainsOptions | undefined,
@@ -3123,12 +3123,24 @@ Actual: ${stringify(fullActual)}`);
}
if (kind !== undefined) {
assert.equal(item.kind, kind, this.assertionMessageAtLastKnownMarker("completion item kind for " + entryId));
if (typeof kind === "string") {
assert.equal(item.kind, kind, this.assertionMessageAtLastKnownMarker("completion item kind for " + entryId));
}
else {
if (kind.kind) {
assert.equal(item.kind, kind.kind, this.assertionMessageAtLastKnownMarker("completion item kind for " + entryId));
}
if (kind.kindModifiers !== undefined) {
assert.equal(item.kindModifiers, kind.kindModifiers, this.assertionMessageAtLastKnownMarker("completion item kindModifiers for " + entryId));
}
}
}
if (spanIndex !== undefined) {
const span = this.getTextSpanForRangeAtIndex(spanIndex);
assert(TestState.textSpansEqual(span, item.replacementSpan), this.assertionMessageAtLastKnownMarker(stringify(span) + " does not equal " + stringify(item.replacementSpan) + " replacement span for " + entryId));
assert.isTrue(TestState.textSpansEqual(span, item.replacementSpan), this.assertionMessageAtLastKnownMarker(stringify(span) + " does not equal " + stringify(item.replacementSpan) + " replacement span for " + entryId));
}
assert.equal(item.hasAction, hasAction);
@@ -3763,8 +3775,11 @@ namespace FourSlashInterface {
this.state.goToMarker(name);
}
public eachMarker(action: () => void) {
this.state.goToEachMarker(action);
public eachMarker(markers: ReadonlyArray<string>, action: (marker: FourSlash.Marker, index: number) => void): void;
public eachMarker(action: (marker: FourSlash.Marker, index: number) => void): void;
public eachMarker(a: ReadonlyArray<string> | ((marker: FourSlash.Marker, index: number) => void), b?: (marker: FourSlash.Marker, index: number) => void): void {
const markers = typeof a === "function" ? this.state.getMarkers() : a.map(m => this.state.getMarkerByName(m));
this.state.goToEachMarker(markers, typeof a === "function" ? a : b);
}
public rangeStart(range: FourSlash.Range) {
@@ -3839,7 +3854,7 @@ namespace FourSlashInterface {
// Verifies the completion list contains the specified symbol. The
// completion list is brought up if necessary
public completionListContains(entryId: string | ts.Completions.CompletionEntryIdentifier, text?: string, documentation?: string, kind?: string, spanIndex?: number, hasAction?: boolean, options?: VerifyCompletionListContainsOptions) {
public completionListContains(entryId: string | ts.Completions.CompletionEntryIdentifier, text?: string, documentation?: string, kind?: string | { kind?: string, kindModifiers?: string }, spanIndex?: number, hasAction?: boolean, options?: VerifyCompletionListContainsOptions) {
if (typeof entryId === "string") {
entryId = { name: entryId, source: undefined };
}
+35 -56
View File
@@ -23,60 +23,39 @@
/// <reference path="virtualFileSystem.ts" />
/// <reference types="node" />
/// <reference types="mocha" />
/// <reference types="chai" />
// Block scoped definitions work poorly for global variables, temporarily enable var
/* tslint:disable:no-var-keyword */
function assert(expr: boolean, msg?: string | (() => string)): void {
if (!expr) {
throw new Error(typeof msg === "string" ? msg : msg());
}
}
namespace assert {
export function isFalse(expr: boolean, msg = "Expected value to be false."): void {
assert(!expr, msg);
}
export function equal<T>(a: T, b: T, msg?: string): void {
assert(a === b, msg || (() => `Expected to be equal:\nExpected:\n${JSON.stringify(a)}\nActual:\n${JSON.stringify(b)}`));
}
export function notEqual<T>(a: T, b: T, msg = "Expected values to not be equal."): void {
assert(a !== b, msg);
}
export function isDefined(x: {} | null | undefined, msg = "Expected value to be defined."): void {
assert(x !== undefined && x !== null, msg);
}
export function isUndefined(x: {} | null | undefined, msg = "Expected value to be undefined."): void {
assert(x === undefined, msg);
}
export function deepEqual<T>(a: T, b: T, msg?: string): void {
assert(isDeepEqual(a, b), msg || (() => `Expected values to be deeply equal:\nExpected:\n${JSON.stringify(a, undefined, 4)}\nActual:\n${JSON.stringify(b, undefined, 4)}`));
}
export function lengthOf(a: ReadonlyArray<{}>, length: number, msg = "Expected length to match."): void {
assert(a.length === length, msg);
}
export function throws(cb: () => void, msg = "Expected callback to throw"): void {
let threw = false;
try {
cb();
}
catch {
threw = true;
}
assert(threw, msg);
}
// this will work in the browser via browserify
var _chai: typeof chai = require("chai");
var assert: typeof _chai.assert = _chai.assert;
{
// chai's builtin `assert.isFalse` is featureful but slow - we don't use those features,
// so we'll just overwrite it as an alterative to migrating a bunch of code off of chai
assert.isFalse = (expr, msg) => { if (expr as any as boolean !== false) throw new Error(msg); };
function isDeepEqual<T>(a: T, b: T): boolean {
if (a === b) {
return true;
const assertDeepImpl = assert.deepEqual;
assert.deepEqual = (a, b, msg) => {
if (ts.isArray(a) && ts.isArray(b)) {
assertDeepImpl(arrayExtraKeysObject(a), arrayExtraKeysObject(b), "Array extra keys differ");
}
if (typeof a !== "object" || typeof b !== "object" || a === null || b === null) {
return false;
assertDeepImpl(a, b, msg);
function arrayExtraKeysObject(a: ReadonlyArray<{} | null | undefined>): object {
const obj: { [key: string]: {} | null | undefined } = {};
for (const key in a) {
if (Number.isNaN(Number(key))) {
obj[key] = a[key];
}
}
return obj;
}
const aKeys = Object.keys(a).sort();
const bKeys = Object.keys(b).sort();
return aKeys.length === bKeys.length && aKeys.every((key, i) => bKeys[i] === key && isDeepEqual((a as any)[key], (b as any)[key]));
}
};
}
declare var __dirname: string; // Node-specific
var global: NodeJS.Global = <any>Function("return this").call(undefined);
@@ -84,7 +63,7 @@ declare var window: {};
declare var XMLHttpRequest: {
new(): XMLHttpRequest;
};
interface XMLHttpRequest {
interface XMLHttpRequest {
readonly readyState: number;
readonly responseText: string;
readonly status: number;
@@ -389,8 +368,8 @@ namespace Utils {
return;
}
assert(!!array1, "array1");
assert(!!array2, "array2");
assert(array1, "array1");
assert(array2, "array2");
assert.equal(array1.length, array2.length, "array1.length !== array2.length");
@@ -413,8 +392,8 @@ namespace Utils {
return;
}
assert(!!node1, "node1");
assert(!!node2, "node2");
assert(node1, "node1");
assert(node2, "node2");
assert.equal(node1.pos, node2.pos, "node1.pos !== node2.pos");
assert.equal(node1.end, node2.end, "node1.end !== node2.end");
assert.equal(node1.kind, node2.kind, "node1.kind !== node2.kind");
@@ -444,8 +423,8 @@ namespace Utils {
return;
}
assert(!!array1, "array1");
assert(!!array2, "array2");
assert(array1, "array1");
assert(array2, "array2");
assert.equal(array1.pos, array2.pos, "array1.pos !== array2.pos");
assert.equal(array1.end, array2.end, "array1.end !== array2.end");
assert.equal(array1.length, array2.length, "array1.length !== array2.length");
@@ -895,7 +874,7 @@ namespace Harness {
// Cache of lib files from "built/local"
let libFileNameSourceFileMap: ts.Map<ts.SourceFile> | undefined;
// Cache of lib files from "tests/lib/"
// Cache of lib files from "tests/lib/"
const testLibFileNameSourceFileMap = ts.createMap<ts.SourceFile>();
const es6TestLibFileNameSourceFileMap = ts.createMap<ts.SourceFile>();
@@ -1301,7 +1280,7 @@ namespace Harness {
function findResultCodeFile(fileName: string) {
const sourceFile = result.program.getSourceFile(fileName);
assert.isDefined(sourceFile, "Program has no source file with name '" + fileName + "'");
assert(sourceFile, "Program has no source file with name '" + fileName + "'");
// Is this file going to be emitted separately
let sourceFileName: string;
const outFile = options.outFile || options.out;
@@ -1984,7 +1963,7 @@ namespace Harness {
const data = testUnitData[i];
if (ts.getBaseFileName(data.name).toLowerCase() === "tsconfig.json") {
const configJson = ts.parseJsonText(data.name, data.content);
assert(configJson.endOfFileToken !== undefined);
assert.isTrue(configJson.endOfFileToken !== undefined);
let baseDir = ts.normalizePath(ts.getDirectoryPath(data.name));
if (rootDir) {
baseDir = ts.getNormalizedAbsolutePath(baseDir, rootDir);
+3 -2
View File
@@ -176,7 +176,8 @@ namespace Harness.LanguageService {
*/
public positionToLineAndCharacter(fileName: string, position: number): ts.LineAndCharacter {
const script: ScriptInfo = this.getScriptInfo(fileName);
assert(!!script);
assert.isOk(script);
return ts.computeLineAndCharacterOfPosition(script.getLineMap(), position);
}
}
@@ -378,7 +379,7 @@ namespace Harness.LanguageService {
classification: parseInt(result[i + 1])
};
assert(t.length > 0, "Result length should be greater than 0, got :" + t.length);
assert.isTrue(t.length > 0, "Result length should be greater than 0, got :" + t.length);
position += t.length;
}
const finalLexState = parseInt(result[result.length - 1]);
+1 -1
View File
@@ -186,7 +186,7 @@ class ProjectRunner extends RunnerBase {
getCanonicalFileName: Harness.Compiler.getCanonicalFileName,
useCaseSensitiveFileNames: () => Harness.IO.useCaseSensitiveFileNames(),
getNewLine: () => Harness.IO.newLine(),
fileExists: fileName => fileName === Harness.Compiler.defaultLibFileName || getSourceFileText(fileName) !== undefined,
fileExists: fileName => fileName === Harness.Compiler.defaultLibFileName || getSourceFileText(fileName) !== undefined,
readFile: fileName => Harness.IO.readFile(fileName),
getDirectories: path => Harness.IO.getDirectories(path)
};
+3 -3
View File
@@ -285,10 +285,10 @@ namespace Harness.SourceMapRecorder {
}
export function recordNewSourceFileSpan(sourceMapSpan: ts.SourceMapSpan, newSourceFileCode: string) {
assert(spansOnSingleLine.length === 0 || spansOnSingleLine[0].sourceMapSpan.emittedLine !== sourceMapSpan.emittedLine, "new file source map span should be on new line. We currently handle only that scenario");
assert.isTrue(spansOnSingleLine.length === 0 || spansOnSingleLine[0].sourceMapSpan.emittedLine !== sourceMapSpan.emittedLine, "new file source map span should be on new line. We currently handle only that scenario");
recordSourceMapSpan(sourceMapSpan);
assert(spansOnSingleLine.length === 1);
assert.isTrue(spansOnSingleLine.length === 1);
sourceMapRecorder.WriteLine("-------------------------------------------------------------------");
sourceMapRecorder.WriteLine("emittedFile:" + jsFile.fileName);
sourceMapRecorder.WriteLine("sourceFile:" + sourceMapSources[spansOnSingleLine[0].sourceMapSpan.sourceIndex]);
@@ -331,7 +331,7 @@ namespace Harness.SourceMapRecorder {
function getMarkerId(markerIndex: number) {
let markerId = "";
if (spanMarkerContinues) {
assert(markerIndex === 0);
assert.isTrue(markerIndex === 0);
markerId = "1->";
}
else {
+2 -1
View File
@@ -5,7 +5,7 @@
"outFile": "../../built/local/run.js",
"declaration": false,
"types": [
"node", "mocha"
"node", "mocha", "chai"
],
"lib": [
"es6",
@@ -108,6 +108,7 @@
"./unittests/reuseProgramStructure.ts",
"./unittests/moduleResolution.ts",
"./unittests/tsconfigParsing.ts",
"./unittests/asserts.ts",
"./unittests/builder.ts",
"./unittests/commandLineParsing.ts",
"./unittests/configurationExtension.ts",
+11
View File
@@ -0,0 +1,11 @@
/// <reference path="..\harness.ts" />
namespace ts {
describe("assert", () => {
it("deepEqual", () => {
assert.throws(() => assert.deepEqual(createNodeArray([createIdentifier("A")]), createNodeArray([createIdentifier("B")])));
assert.throws(() => assert.deepEqual(createNodeArray([], /*hasTrailingComma*/ true), createNodeArray([], /*hasTrailingComma*/ false)));
assert.deepEqual(createNodeArray([createIdentifier("A")], /*hasTrailingComma*/ true), createNodeArray([createIdentifier("A")], /*hasTrailingComma*/ true));
});
});
}
+5 -5
View File
@@ -12,7 +12,7 @@ namespace ts {
const parsedErrors = parsed.errors;
const expectedErrors = expectedParsedCommandLine.errors;
assert(parsedErrors.length === expectedErrors.length, `Expected error: ${JSON.stringify(expectedErrors)}. Actual error: ${JSON.stringify(parsedErrors)}.`);
assert.isTrue(parsedErrors.length === expectedErrors.length, `Expected error: ${JSON.stringify(expectedErrors)}. Actual error: ${JSON.stringify(parsedErrors)}.`);
for (let i = 0; i < parsedErrors.length; i++) {
const parsedError = parsedErrors[i];
const expectedError = expectedErrors[i];
@@ -23,7 +23,7 @@ namespace ts {
const parsedFileNames = parsed.fileNames;
const expectedFileNames = expectedParsedCommandLine.fileNames;
assert(parsedFileNames.length === expectedFileNames.length, `Expected fileNames: [${JSON.stringify(expectedFileNames)}]. Actual fileNames: [${JSON.stringify(parsedFileNames)}].`);
assert.isTrue(parsedFileNames.length === expectedFileNames.length, `Expected fileNames: [${JSON.stringify(expectedFileNames)}]. Actual fileNames: [${JSON.stringify(parsedFileNames)}].`);
for (let i = 0; i < parsedFileNames.length; i++) {
const parsedFileName = parsedFileNames[i];
const expectedFileName = expectedFileNames[i];
@@ -60,7 +60,7 @@ namespace ts {
assertParseResult(["--lib", "es5,invalidOption", "0.ts"],
{
errors: [{
messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'es2018', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'es2017.typedarrays', 'esnext.asynciterable'.",
messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'es2018', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'es2017.typedarrays', 'esnext.asynciterable', 'esnext.promise'.",
category: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.category,
code: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
@@ -263,7 +263,7 @@ namespace ts {
assertParseResult(["--lib", "es5,", "es7", "0.ts"],
{
errors: [{
messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'es2018', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'es2017.typedarrays', 'esnext.asynciterable'.",
messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'es2018', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'es2017.typedarrays', 'esnext.asynciterable', 'esnext.promise'.",
category: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.category,
code: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
@@ -283,7 +283,7 @@ namespace ts {
assertParseResult(["--lib", "es5, ", "es7", "0.ts"],
{
errors: [{
messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'es2018', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'es2017.typedarrays', 'esnext.asynciterable'.",
messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'es2018', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'es2017.typedarrays', 'esnext.asynciterable', 'esnext.promise'.",
category: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.category,
code: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
+9 -9
View File
@@ -25,7 +25,7 @@ namespace ts.projectSystem {
const actualResultSingleProjectFileNameList = actualResultSingleProject.fileNames.sort();
const expectedResultSingleProjectFileNameList = map(expectedResultSingleProject.files, f => f.path).sort();
assert(
assert.isTrue(
arrayIsEqualTo(actualResultSingleProjectFileNameList, expectedResultSingleProjectFileNameList),
`For project ${actualResultSingleProject.projectFileName}, the actual result is ${actualResultSingleProjectFileNameList}, while expected ${expectedResultSingleProjectFileNameList}`);
}
@@ -563,7 +563,7 @@ namespace ts.projectSystem {
session.executeCommand(compileFileRequest);
const expectedEmittedFileName = "/a/b/f1.js";
assert(host.fileExists(expectedEmittedFileName));
assert.isTrue(host.fileExists(expectedEmittedFileName));
assert.equal(host.readFile(expectedEmittedFileName), `"use strict";\r\nexports.__esModule = true;\r\nfunction Foo() { return 10; }\r\nexports.Foo = Foo;\r\n`);
});
@@ -600,11 +600,11 @@ namespace ts.projectSystem {
session.executeCommand(emitRequest);
const expectedOutFileName = "/a/b/dist.js";
assert(host.fileExists(expectedOutFileName));
assert.isTrue(host.fileExists(expectedOutFileName));
const outFileContent = host.readFile(expectedOutFileName);
assert(outFileContent.indexOf(file1.content) !== -1);
assert(outFileContent.indexOf(file2.content) === -1);
assert(outFileContent.indexOf(file3.content) === -1);
assert.isTrue(outFileContent.indexOf(file1.content) !== -1);
assert.isTrue(outFileContent.indexOf(file2.content) === -1);
assert.isTrue(outFileContent.indexOf(file3.content) === -1);
});
it("should use project root as current directory so that compile on save results in correct file mapping", () => {
@@ -634,19 +634,19 @@ namespace ts.projectSystem {
// Verify js file
const expectedOutFileName = "/root/TypeScriptProject3/TypeScriptProject3/" + outFileName;
assert(host.fileExists(expectedOutFileName));
assert.isTrue(host.fileExists(expectedOutFileName));
const outFileContent = host.readFile(expectedOutFileName);
verifyContentHasString(outFileContent, file1.content);
verifyContentHasString(outFileContent, `//# ${"sourceMappingURL"}=${outFileName}.map`); // Sometimes tools can sometimes see this line as a source mapping url comment, so we obfuscate it a little
// Verify map file
const expectedMapFileName = expectedOutFileName + ".map";
assert(host.fileExists(expectedMapFileName));
assert.isTrue(host.fileExists(expectedMapFileName));
const mapFileContent = host.readFile(expectedMapFileName);
verifyContentHasString(mapFileContent, `"sources":["${inputFileName}"]`);
function verifyContentHasString(content: string, str: string) {
assert(stringContains(content, str), `Expected "${content}" to have "${str}"`);
assert.isTrue(stringContains(content, str), `Expected "${content}" to have "${str}"`);
}
});
});
@@ -113,7 +113,7 @@ namespace ts {
const caseSensitiveHost = new Utils.MockParseConfigHost(caseSensitiveBasePath, /*useCaseSensitiveFileNames*/ true, testContents);
function verifyDiagnostics(actual: Diagnostic[], expected: {code: number, category: DiagnosticCategory, messageText: string}[]) {
assert(expected.length === actual.length, `Expected error: ${JSON.stringify(expected)}. Actual error: ${JSON.stringify(actual)}.`);
assert.isTrue(expected.length === actual.length, `Expected error: ${JSON.stringify(expected)}. Actual error: ${JSON.stringify(actual)}.`);
for (let i = 0; i < actual.length; i++) {
const actualError = actual[i];
const expectedError = expected[i];
@@ -16,7 +16,7 @@ namespace ts {
assert.equal(parsedCompilerOptions, expectedCompilerOptions);
const expectedErrors = expectedResult.errors;
assert(expectedResult.errors.length === actualErrors.length, `Expected error: ${JSON.stringify(expectedResult.errors)}. Actual error: ${JSON.stringify(actualErrors)}.`);
assert.isTrue(expectedResult.errors.length === actualErrors.length, `Expected error: ${JSON.stringify(expectedResult.errors)}. Actual error: ${JSON.stringify(actualErrors)}.`);
for (let i = 0; i < actualErrors.length; i++) {
const actualError = actualErrors[i];
const expectedError = expectedErrors[i];
@@ -42,15 +42,15 @@ namespace ts {
const actualErrors = filter(actualParseErrors, error => error.code !== Diagnostics.No_inputs_were_found_in_config_file_0_Specified_include_paths_were_1_and_exclude_paths_were_2.code);
const expectedErrors = expectedResult.errors;
assert(expectedResult.errors.length === actualErrors.length, `Expected error: ${JSON.stringify(expectedResult.errors)}. Actual error: ${JSON.stringify(actualErrors)}.`);
assert.isTrue(expectedResult.errors.length === actualErrors.length, `Expected error: ${JSON.stringify(expectedResult.errors)}. Actual error: ${JSON.stringify(actualErrors)}.`);
for (let i = 0; i < actualErrors.length; i++) {
const actualError = actualErrors[i];
const expectedError = expectedErrors[i];
assert.equal(actualError.code, expectedError.code, `Expected error-code: ${JSON.stringify(expectedError.code)}. Actual error-code: ${JSON.stringify(actualError.code)}.`);
assert.equal(actualError.category, expectedError.category, `Expected error-category: ${JSON.stringify(expectedError.category)}. Actual error-category: ${JSON.stringify(actualError.category)}.`);
assert.isDefined(actualError.file);
assert(actualError.start > 0);
assert(actualError.length > 0);
assert(actualError.file);
assert(actualError.start);
assert(actualError.length);
}
}
@@ -266,7 +266,7 @@ namespace ts {
file: undefined,
start: 0,
length: 0,
messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'es2018', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'es2017.typedarrays', 'esnext.asynciterable'.",
messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'es2018', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'es2017.typedarrays', 'esnext.asynciterable', 'esnext.promise'.",
code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category
}]
@@ -297,7 +297,7 @@ namespace ts {
file: undefined,
start: 0,
length: 0,
messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'es2018', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'es2017.typedarrays', 'esnext.asynciterable'.",
messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'es2018', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'es2017.typedarrays', 'esnext.asynciterable', 'esnext.promise'.",
code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category
}]
@@ -328,7 +328,7 @@ namespace ts {
file: undefined,
start: 0,
length: 0,
messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'es2018', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'es2017.typedarrays', 'esnext.asynciterable'.",
messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'es2018', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'es2017.typedarrays', 'esnext.asynciterable', 'esnext.promise'.",
code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category
}]
@@ -359,7 +359,7 @@ namespace ts {
file: undefined,
start: 0,
length: 0,
messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'es2018', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'es2017.typedarrays', 'esnext.asynciterable'.",
messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'es2018', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'es2017.typedarrays', 'esnext.asynciterable', 'esnext.promise'.",
code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category
}]
@@ -17,16 +17,16 @@ namespace ts {
function verifyErrors(actualErrors: Diagnostic[], expectedResult: ExpectedResult, hasLocation?: boolean) {
const expectedErrors = expectedResult.errors;
assert(expectedResult.errors.length === actualErrors.length, `Expected error: ${JSON.stringify(expectedResult.errors)}. Actual error: ${JSON.stringify(actualErrors)}.`);
assert.isTrue(expectedResult.errors.length === actualErrors.length, `Expected error: ${JSON.stringify(expectedResult.errors)}. Actual error: ${JSON.stringify(actualErrors)}.`);
for (let i = 0; i < actualErrors.length; i++) {
const actualError = actualErrors[i];
const expectedError = expectedErrors[i];
assert.equal(actualError.code, expectedError.code, `Expected error-code: ${JSON.stringify(expectedError.code)}. Actual error-code: ${JSON.stringify(actualError.code)}.`);
assert.equal(actualError.category, expectedError.category, `Expected error-category: ${JSON.stringify(expectedError.category)}. Actual error-category: ${JSON.stringify(actualError.category)}.`);
if (hasLocation) {
assert.isDefined(actualError.file);
assert(actualError.start > 0);
assert(actualError.length > 0);
assert(actualError.file);
assert(actualError.start);
assert(actualError.length);
}
}
}
+12
View File
@@ -262,6 +262,18 @@ namespace N { // Force this test to be TS-only
y = [#|this.x|];
}
}`);
// TODO (https://github.com/Microsoft/TypeScript/issues/20727): the extracted constant should have a type annotation.
testExtractConstant("extractConstant_ContextualType", `
interface I { a: 1 | 2 | 3 }
let i: I = [#|{ a: 1 }|];
`);
testExtractConstant("extractConstant_ContextualType_Lambda", `
const myObj: { member(x: number, y: string): void } = {
member: [#|(x, y) => x + y|],
}
`);
});
function testExtractConstant(caption: string, text: string) {
+1 -1
View File
@@ -39,7 +39,7 @@ namespace ts {
assert.equal(end, expectedRange.end, "incorrect end of range");
}
else {
assert(!result.targetRange, `expected range to extract to be undefined`);
assert.isTrue(!result.targetRange, `expected range to extract to be undefined`);
}
}
+1 -1
View File
@@ -47,7 +47,7 @@ namespace ts {
assert(!result.emitSkipped, "emit was skipped");
assert(result.outputFiles.length === 1, "a number of files other than 1 was output");
assert(result.outputFiles[0].name === "input.js", `Expected output file name input.js, but got ${result.outputFiles[0].name}`);
assert.isDefined(result.outputFiles[0].text.match(options.newLine === NewLineKind.CarriageReturnLineFeed ? /\r\n/ : /[^\r]\n/), "expected to find appropriate newlines");
assert(result.outputFiles[0].text.match(options.newLine === NewLineKind.CarriageReturnLineFeed ? /\r\n/ : /[^\r]\n/), "expected to find appropriate newlines");
assert(!result.outputFiles[0].text.match(options.newLine === NewLineKind.CarriageReturnLineFeed ? /[^\r]\n/ : /\r\n/), "expected not to find inappropriate newlines");
}
+1 -1
View File
@@ -66,7 +66,7 @@ namespace ts {
assertSameDiagnostics(newTree, incrementalNewTree);
// There should be no reused nodes between two trees that are fully parsed.
assert(reusedElements(oldTree, newTree) === 0);
assert.isTrue(reusedElements(oldTree, newTree) === 0);
assert.equal(newTree.fileName, incrementalNewTree.fileName, "newTree.fileName !== incrementalNewTree.fileName");
assert.equal(newTree.text, incrementalNewTree.text, "newTree.text !== incrementalNewTree.text");
+3 -3
View File
@@ -7,7 +7,7 @@ namespace ts {
function parsesCorrectly(name: string, content: string) {
it(name, () => {
const typeAndDiagnostics = ts.parseJSDocTypeExpressionForTests(content);
assert(typeAndDiagnostics && typeAndDiagnostics.diagnostics.length === 0, "no errors issued");
assert.isTrue(typeAndDiagnostics && typeAndDiagnostics.diagnostics.length === 0, "no errors issued");
Harness.Baseline.runBaseline("JSDocParsing/TypeExpressions.parsesCorrectly." + name + ".json",
() => Utils.sourceFileToJSON(typeAndDiagnostics.jsDocTypeExpression.type));
@@ -17,7 +17,7 @@ namespace ts {
function parsesIncorrectly(name: string, content: string) {
it(name, () => {
const type = ts.parseJSDocTypeExpressionForTests(content);
assert(!type || type.diagnostics.length > 0);
assert.isTrue(!type || type.diagnostics.length > 0);
});
}
@@ -106,7 +106,7 @@ namespace ts {
function parsesIncorrectly(name: string, content: string) {
it(name, () => {
const type = parseIsolatedJSDocComment(content);
assert(!type || type.diagnostics.length > 0);
assert.isTrue(!type || type.diagnostics.length > 0);
});
}
+1 -1
View File
@@ -42,7 +42,7 @@ export function Component(x: Config): any;`
},
});
const definitions = languageService.getDefinitionAtPosition("foo.ts", 160); // 160 is the latter `vueTemplateHtml` position
assert.isDefined(definitions);
expect(definitions).to.exist; // tslint:disable-line no-unused-expression
});
});
}
+67 -11
View File
@@ -50,6 +50,7 @@ namespace ts {
"/dev/x/b.ts",
"/dev/x/y/a.ts",
"/dev/x/y/b.ts",
"/dev/q/a/c/b/d.ts",
"/dev/js/a.js",
"/dev/js/b.js",
]);
@@ -1171,13 +1172,17 @@ namespace ts {
};
const expected: ts.ParsedCommandLine = {
options: {},
errors: [
createDiagnosticForConfigFile(json, 12, 11, ts.Diagnostics.File_specification_cannot_contain_multiple_recursive_directory_wildcards_Asterisk_Asterisk_Colon_0, "**/x/**/*"),
ts.createCompilerDiagnostic(ts.Diagnostics.No_inputs_were_found_in_config_file_0_Specified_include_paths_were_1_and_exclude_paths_were_2,
caseInsensitiveTsconfigPath, JSON.stringify(json.include), "[]")
errors: [],
fileNames: [
"c:/dev/x/a.ts",
"c:/dev/x/aa.ts",
"c:/dev/x/b.ts",
"c:/dev/x/y/a.ts",
"c:/dev/x/y/b.ts",
],
fileNames: [],
wildcardDirectories: {}
wildcardDirectories: {
"c:/dev": ts.WatchDirectoryFlags.Recursive
}
};
validateMatches(expected, json, caseInsensitiveHost, caseInsensitiveBasePath, /*existingOptions*/ undefined, caseInsensitiveTsconfigPath);
});
@@ -1192,13 +1197,9 @@ namespace ts {
};
const expected: ts.ParsedCommandLine = {
options: {},
errors: [
createDiagnosticForConfigFile(json, 34, 9, ts.Diagnostics.File_specification_cannot_contain_multiple_recursive_directory_wildcards_Asterisk_Asterisk_Colon_0, "**/x/**")
],
errors: [],
fileNames: [
"c:/dev/a.ts",
"c:/dev/x/a.ts",
"c:/dev/x/y/a.ts",
"c:/dev/z/a.ts"
],
wildcardDirectories: {
@@ -1426,5 +1427,60 @@ namespace ts {
});
});
});
describe("exclude or include patterns which start with **", () => {
it("can exclude dirs whose pattern starts with **", () => {
const json = {
exclude: [
"**/x"
]
};
const expected: ts.ParsedCommandLine = {
options: {},
errors: [],
fileNames: [
"/dev/A.ts",
"/dev/B.ts",
"/dev/a.ts",
"/dev/b.ts",
"/dev/c.d.ts",
"/dev/q/a/c/b/d.ts",
"/dev/z/a.ts",
"/dev/z/aba.ts",
"/dev/z/abz.ts",
"/dev/z/b.ts",
"/dev/z/bba.ts",
"/dev/z/bbz.ts",
],
wildcardDirectories: {
"/dev": ts.WatchDirectoryFlags.Recursive
}
};
validateMatches(expected, json, caseSensitiveHost, caseSensitiveBasePath);
});
it("can include dirs whose pattern starts with **", () => {
const json = {
include: [
"**/x",
"**/a/**/b"
]
};
const expected: ts.ParsedCommandLine = {
options: {},
errors: [],
fileNames: [
"/dev/x/a.ts",
"/dev/x/b.ts",
"/dev/x/y/a.ts",
"/dev/x/y/b.ts",
"/dev/q/a/c/b/d.ts",
],
wildcardDirectories: {
"/dev": ts.WatchDirectoryFlags.Recursive
}
};
validateMatches(expected, json, caseSensitiveHost, caseSensitiveBasePath);
});
});
});
}
+15 -15
View File
@@ -4,9 +4,9 @@ namespace ts {
export function checkResolvedModule(expected: ResolvedModuleFull, actual: ResolvedModuleFull): boolean {
if (!expected === !actual) {
if (expected) {
assert(expected.resolvedFileName === actual.resolvedFileName, `'resolvedFileName': expected '${expected.resolvedFileName}' to be equal to '${actual.resolvedFileName}'`);
assert(expected.extension === actual.extension, `'ext': expected '${expected.extension}' to be equal to '${actual.extension}'`);
assert(expected.isExternalLibraryImport === actual.isExternalLibraryImport, `'isExternalLibraryImport': expected '${expected.isExternalLibraryImport}' to be equal to '${actual.isExternalLibraryImport}'`);
assert.isTrue(expected.resolvedFileName === actual.resolvedFileName, `'resolvedFileName': expected '${expected.resolvedFileName}' to be equal to '${actual.resolvedFileName}'`);
assert.isTrue(expected.extension === actual.extension, `'ext': expected '${expected.extension}' to be equal to '${actual.extension}'`);
assert.isTrue(expected.isExternalLibraryImport === actual.isExternalLibraryImport, `'isExternalLibraryImport': expected '${expected.isExternalLibraryImport}' to be equal to '${actual.isExternalLibraryImport}'`);
}
return true;
}
@@ -14,7 +14,7 @@ namespace ts {
}
export function checkResolvedModuleWithFailedLookupLocations(actual: ResolvedModuleWithFailedLookupLocations, expectedResolvedModule: ResolvedModuleFull, expectedFailedLookupLocations: string[]): void {
assert(actual.resolvedModule !== undefined, "module should be resolved");
assert.isTrue(actual.resolvedModule !== undefined, "module should be resolved");
checkResolvedModule(actual.resolvedModule, expectedResolvedModule);
assert.deepEqual(actual.failedLookupLocations, expectedFailedLookupLocations);
}
@@ -58,7 +58,7 @@ namespace ts {
realpath,
directoryExists: path => directories.has(path),
fileExists: path => {
assert(directories.has(getDirectoryPath(path)), `'fileExists' '${path}' request in non-existing directory`);
assert.isTrue(directories.has(getDirectoryPath(path)), `'fileExists' '${path}' request in non-existing directory`);
return map.has(path);
}
};
@@ -351,7 +351,7 @@ namespace ts {
// try to get file using a relative name
for (const relativeFileName of relativeNamesToCheck) {
assert(program.getSourceFile(relativeFileName) !== undefined, `expected to get file by relative name, got undefined`);
assert.isTrue(program.getSourceFile(relativeFileName) !== undefined, `expected to get file by relative name, got undefined`);
}
}
@@ -441,7 +441,7 @@ export = C;
"/a/b/c.ts": `/// <reference path="d.ts"/>`,
"/a/b/d.ts": "var x"
});
test(files, { module: ts.ModuleKind.AMD }, "/a/b", /*useCaseSensitiveFileNames*/ false, ["c.ts", "/a/b/d.ts"], []);
test(files, { module: ts.ModuleKind.AMD }, "/a/b", /*useCaseSensitiveFileNames*/ false, ["c.ts", "/a/b/d.ts"], []);
});
it("should fail when two files used in program differ only in casing (tripleslash references)", () => {
@@ -449,7 +449,7 @@ export = C;
"/a/b/c.ts": `/// <reference path="D.ts"/>`,
"/a/b/d.ts": "var x"
});
test(files, { module: ts.ModuleKind.AMD, forceConsistentCasingInFileNames: true }, "/a/b", /*useCaseSensitiveFileNames*/ false, ["c.ts", "d.ts"], [1149]);
test(files, { module: ts.ModuleKind.AMD, forceConsistentCasingInFileNames: true }, "/a/b", /*useCaseSensitiveFileNames*/ false, ["c.ts", "d.ts"], [1149]);
});
it("should fail when two files used in program differ only in casing (imports)", () => {
@@ -457,7 +457,7 @@ export = C;
"/a/b/c.ts": `import {x} from "D"`,
"/a/b/d.ts": "export var x"
});
test(files, { module: ts.ModuleKind.AMD, forceConsistentCasingInFileNames: true }, "/a/b", /*useCaseSensitiveFileNames*/ false, ["c.ts", "d.ts"], [1149]);
test(files, { module: ts.ModuleKind.AMD, forceConsistentCasingInFileNames: true }, "/a/b", /*useCaseSensitiveFileNames*/ false, ["c.ts", "d.ts"], [1149]);
});
it("should fail when two files used in program differ only in casing (imports, relative module names)", () => {
@@ -465,7 +465,7 @@ export = C;
"moduleA.ts": `import {x} from "./ModuleB"`,
"moduleB.ts": "export var x"
});
test(files, { module: ts.ModuleKind.CommonJS, forceConsistentCasingInFileNames: true }, "", /*useCaseSensitiveFileNames*/ false, ["moduleA.ts", "moduleB.ts"], [1149]);
test(files, { module: ts.ModuleKind.CommonJS, forceConsistentCasingInFileNames: true }, "", /*useCaseSensitiveFileNames*/ false, ["moduleA.ts", "moduleB.ts"], [1149]);
});
it("should fail when two files exist on disk that differs only in casing", () => {
@@ -474,7 +474,7 @@ export = C;
"/a/b/D.ts": "export var x",
"/a/b/d.ts": "export var y"
});
test(files, { module: ts.ModuleKind.AMD }, "/a/b", /*useCaseSensitiveFileNames*/ true, ["c.ts", "d.ts"], [1149]);
test(files, { module: ts.ModuleKind.AMD }, "/a/b", /*useCaseSensitiveFileNames*/ true, ["c.ts", "d.ts"], [1149]);
});
it("should fail when module name in 'require' calls has inconsistent casing", () => {
@@ -483,7 +483,7 @@ export = C;
"moduleB.ts": `import a = require("./moduleC")`,
"moduleC.ts": "export var x"
});
test(files, { module: ts.ModuleKind.CommonJS, forceConsistentCasingInFileNames: true }, "", /*useCaseSensitiveFileNames*/ false, ["moduleA.ts", "moduleB.ts", "moduleC.ts"], [1149, 1149]);
test(files, { module: ts.ModuleKind.CommonJS, forceConsistentCasingInFileNames: true }, "", /*useCaseSensitiveFileNames*/ false, ["moduleA.ts", "moduleB.ts", "moduleC.ts"], [1149, 1149]);
});
it("should fail when module names in 'require' calls has inconsistent casing and current directory has uppercase chars", () => {
@@ -496,7 +496,7 @@ import a = require("./moduleA");
import b = require("./moduleB");
`
});
test(files, { module: ts.ModuleKind.CommonJS, forceConsistentCasingInFileNames: true }, "/a/B/c", /*useCaseSensitiveFileNames*/ false, ["moduleD.ts"], [1149]);
test(files, { module: ts.ModuleKind.CommonJS, forceConsistentCasingInFileNames: true }, "/a/B/c", /*useCaseSensitiveFileNames*/ false, ["moduleD.ts"], [1149]);
});
it("should not fail when module names in 'require' calls has consistent casing and current directory has uppercase chars", () => {
const files = createMapFromTemplate({
@@ -508,7 +508,7 @@ import a = require("./moduleA");
import b = require("./moduleB");
`
});
test(files, { module: ts.ModuleKind.CommonJS, forceConsistentCasingInFileNames: true }, "/a/B/c", /*useCaseSensitiveFileNames*/ false, ["moduleD.ts"], []);
test(files, { module: ts.ModuleKind.CommonJS, forceConsistentCasingInFileNames: true }, "/a/B/c", /*useCaseSensitiveFileNames*/ false, ["moduleD.ts"], []);
});
});
@@ -1074,7 +1074,7 @@ import b = require("./moduleB");
assert.equal(diagnostics1.length, 1, "expected one diagnostic");
createProgram(names, {}, compilerHost, program1);
assert(program1.structureIsReused === StructureIsReused.Completely);
assert.isTrue(program1.structureIsReused === StructureIsReused.Completely);
const diagnostics2 = program1.getFileProcessingDiagnostics().getDiagnostics();
assert.equal(diagnostics2.length, 1, "expected one diagnostic");
assert.equal(diagnostics1[0].messageText, diagnostics2[0].messageText, "expected one diagnostic");
+1 -1
View File
@@ -6,7 +6,7 @@ namespace ts {
const map = arrayToSet(expected) as Map<boolean>;
for (const missing of missingPaths) {
const value = map.get(missing);
assert(value, `${missing} to be ${value === undefined ? "not present" : "present only once"}, in actual: ${missingPaths} expected: ${expected}`);
assert.isTrue(value, `${missing} to be ${value === undefined ? "not present" : "present only once"}, in actual: ${missingPaths} expected: ${expected}`);
map.set(missing, false);
}
const notFound = arrayFrom(mapDefinedIterator(map.keys(), k => map.get(k) === true ? k : undefined));
+9 -9
View File
@@ -5,7 +5,7 @@
namespace ts.projectSystem {
describe("Project errors", () => {
function checkProjectErrors(projectFiles: server.ProjectFilesWithTSDiagnostics, expectedErrors: ReadonlyArray<string>): void {
assert(projectFiles !== undefined, "missing project files");
assert.isTrue(projectFiles !== undefined, "missing project files");
checkProjectErrorsWorker(projectFiles.projectErrors, expectedErrors);
}
@@ -15,7 +15,7 @@ namespace ts.projectSystem {
for (let i = 0; i < errors.length; i++) {
const actualMessage = flattenDiagnosticMessageText(errors[i].messageText, "\n");
const expectedMessage = expectedErrors[i];
assert(actualMessage.indexOf(expectedMessage) === 0, `error message does not match, expected ${actualMessage} to start with ${expectedMessage}`);
assert.isTrue(actualMessage.indexOf(expectedMessage) === 0, `error message does not match, expected ${actualMessage} to start with ${expectedMessage}`);
}
}
}
@@ -24,7 +24,7 @@ namespace ts.projectSystem {
assert.equal(errors ? errors.length : 0, expectedErrors.length, `expected ${expectedErrors.length} error in the list`);
if (expectedErrors.length) {
zipWith(errors, expectedErrors, ({ message: actualMessage }, expectedMessage) => {
assert(startsWith(actualMessage, actualMessage), `error message does not match, expected ${actualMessage} to start with ${expectedMessage}`);
assert.isTrue(startsWith(actualMessage, actualMessage), `error message does not match, expected ${actualMessage} to start with ${expectedMessage}`);
});
}
}
@@ -137,13 +137,13 @@ namespace ts.projectSystem {
{
projectService.checkNumberOfProjects({ configuredProjects: 1 });
const configuredProject = forEach(projectService.synchronizeProjectList([]), f => f.info.projectName === corruptedConfig.path && f);
assert(configuredProject !== undefined, "should find configured project");
assert.isTrue(configuredProject !== undefined, "should find configured project");
checkProjectErrors(configuredProject, []);
const projectErrors = configuredProjectAt(projectService, 0).getAllProjectErrors();
checkProjectErrorsWorker(projectErrors, [
"'{' expected."
]);
assert.isDefined(projectErrors[0].file);
assert.isNotNull(projectErrors[0].file);
assert.equal(projectErrors[0].file.fileName, corruptedConfig.path);
}
// fix config and trigger watcher
@@ -151,7 +151,7 @@ namespace ts.projectSystem {
{
projectService.checkNumberOfProjects({ configuredProjects: 1 });
const configuredProject = forEach(projectService.synchronizeProjectList([]), f => f.info.projectName === corruptedConfig.path && f);
assert(configuredProject !== undefined, "should find configured project");
assert.isTrue(configuredProject !== undefined, "should find configured project");
checkProjectErrors(configuredProject, []);
const projectErrors = configuredProjectAt(projectService, 0).getAllProjectErrors();
checkProjectErrorsWorker(projectErrors, []);
@@ -182,7 +182,7 @@ namespace ts.projectSystem {
{
projectService.checkNumberOfProjects({ configuredProjects: 1 });
const configuredProject = forEach(projectService.synchronizeProjectList([]), f => f.info.projectName === corruptedConfig.path && f);
assert(configuredProject !== undefined, "should find configured project");
assert.isTrue(configuredProject !== undefined, "should find configured project");
checkProjectErrors(configuredProject, []);
const projectErrors = configuredProjectAt(projectService, 0).getAllProjectErrors();
checkProjectErrorsWorker(projectErrors, []);
@@ -192,13 +192,13 @@ namespace ts.projectSystem {
{
projectService.checkNumberOfProjects({ configuredProjects: 1 });
const configuredProject = forEach(projectService.synchronizeProjectList([]), f => f.info.projectName === corruptedConfig.path && f);
assert(configuredProject !== undefined, "should find configured project");
assert.isTrue(configuredProject !== undefined, "should find configured project");
checkProjectErrors(configuredProject, []);
const projectErrors = configuredProjectAt(projectService, 0).getAllProjectErrors();
checkProjectErrorsWorker(projectErrors, [
"'{' expected."
]);
assert.isDefined(projectErrors[0].file);
assert.isNotNull(projectErrors[0].file);
assert.equal(projectErrors[0].file.fileName, corruptedConfig.path);
}
});
@@ -193,14 +193,14 @@ namespace ts {
function checkCache<T>(caption: string, program: Program, fileName: string, expectedContent: Map<T>, getCache: (f: SourceFile) => Map<T>, entryChecker: (expected: T, original: T) => boolean): void {
const file = program.getSourceFile(fileName);
assert(file !== undefined, `cannot find file ${fileName}`);
assert.isTrue(file !== undefined, `cannot find file ${fileName}`);
const cache = getCache(file);
if (expectedContent === undefined) {
assert(cache === undefined, `expected ${caption} to be undefined`);
assert.isTrue(cache === undefined, `expected ${caption} to be undefined`);
}
else {
assert(cache !== undefined, `expected ${caption} to be set`);
assert(mapsAreEqual(expectedContent, cache, entryChecker), `contents of ${caption} did not match the expected contents.`);
assert.isTrue(cache !== undefined, `expected ${caption} to be set`);
assert.isTrue(mapsAreEqual(expectedContent, cache, entryChecker), `contents of ${caption} did not match the expected contents.`);
}
}
@@ -329,7 +329,7 @@ namespace ts {
const options: CompilerOptions = { target, noLib: true };
const program1 = newProgram(files, ["a.ts"], options);
assert(program1.getMissingFilePaths().length !== 0);
assert.notDeepEqual(emptyArray, program1.getMissingFilePaths());
const program2 = updateProgram(program1, ["a.ts"], options, noop);
assert.deepEqual(program1.getMissingFilePaths(), program2.getMissingFilePaths());
@@ -341,7 +341,7 @@ namespace ts {
const options: CompilerOptions = { target, noLib: true };
const program1 = newProgram(files, ["a.ts"], options);
assert(program1.getMissingFilePaths().length !== 0);
assert.notDeepEqual(emptyArray, program1.getMissingFilePaths());
const newTexts: NamedSourceText[] = files.concat([{ name: "non-existing-file.ts", text: SourceText.New("", "", `var x = 1`) }]);
const program2 = updateProgram(program1, ["a.ts"], options, noop, newTexts);
@@ -873,7 +873,7 @@ namespace ts {
updateProgramText(files, bxPackage, JSON.stringify({ name: "x", version: "1.2.3" }));
});
assert.equal(program1.structureIsReused, StructureIsReused.Not);
assert.lengthOf(program2.getSemanticDiagnostics(), 0);
assert.deepEqual(program2.getSemanticDiagnostics(), []);
});
});
});
@@ -900,7 +900,7 @@ namespace ts {
/*hasInvalidatedResolution*/ returnFalse,
/*hasChangedAutomaticTypeDirectiveNames*/ false
);
assert(actual);
assert.isTrue(actual);
}
function duplicate(options: CompilerOptions): CompilerOptions;
@@ -50,7 +50,7 @@ describe("Colorization", () => {
const actualEntry = getEntryAtPosition(result, actualEntryPosition);
assert.isDefined(actualEntry, "Could not find classification entry for '" + expectedEntry.value + "' at position: " + actualEntryPosition);
assert(actualEntry, "Could not find classification entry for '" + expectedEntry.value + "' at position: " + actualEntryPosition);
assert.equal(actualEntry.classification, expectedEntry.classification, "Classification class does not match expected. Expected: " + ts.TokenClass[expectedEntry.classification] + ", Actual: " + ts.TokenClass[actualEntry.classification]);
assert.equal(actualEntry.length, expectedEntry.value.length, "Classification length does not match expected. Expected: " + ts.TokenClass[expectedEntry.value.length] + ", Actual: " + ts.TokenClass[actualEntry.length]);
}
@@ -140,25 +140,25 @@ describe("PatternMatcher", () => {
it("PreferCaseSensitiveCamelCaseMatchToLongPattern1", () => {
const match = getFirstMatch("FogBar", "FBB");
assert(match === undefined);
assert.isTrue(match === undefined);
});
it("PreferCaseSensitiveCamelCaseMatchToLongPattern2", () => {
const match = getFirstMatch("FogBar", "FoooB");
assert(match === undefined);
assert.isTrue(match === undefined);
});
it("CamelCaseMatchPartiallyUnmatched", () => {
const match = getFirstMatch("FogBarBaz", "FZ");
assert(match === undefined);
assert.isTrue(match === undefined);
});
it("CamelCaseMatchCompletelyUnmatched", () => {
const match = getFirstMatch("FogBarBaz", "ZZ");
assert(match === undefined);
assert.isTrue(match === undefined);
});
it("TwoUppercaseCharacters", () => {
@@ -220,7 +220,7 @@ describe("PatternMatcher", () => {
it("PreferCaseSensitiveMiddleUnderscore3", () => {
const match = getFirstMatch("Fog_Bar", "F__B");
assert(undefined === match);
assert.isTrue(undefined === match);
});
it("PreferCaseSensitiveMiddleUnderscore4", () => {
@@ -264,25 +264,25 @@ describe("PatternMatcher", () => {
it("AllLowerPattern1", () => {
const match = getFirstMatch("FogBarChangedEventArgs", "changedeventargs");
assert(undefined !== match);
assert.isTrue(undefined !== match);
});
it("AllLowerPattern2", () => {
const match = getFirstMatch("FogBarChangedEventArgs", "changedeventarrrgh");
assert(undefined === match);
assert.isTrue(undefined === match);
});
it("AllLowerPattern3", () => {
const match = getFirstMatch("ABCDEFGH", "bcd");
assert(undefined !== match);
assert.isTrue(undefined !== match);
});
it("AllLowerPattern4", () => {
const match = getFirstMatch("AbcdefghijEfgHij", "efghij");
assert(undefined === match);
assert.isTrue(undefined === match);
});
});
@@ -370,13 +370,13 @@ describe("PatternMatcher", () => {
it("BlankPattern", () => {
const matches = getAllMatches("AddMetadataReference", "");
assert(matches === undefined);
assert.isTrue(matches === undefined);
});
it("WhitespaceOnlyPattern", () => {
const matches = getAllMatches("AddMetadataReference", " ");
assert(matches === undefined);
assert.isTrue(matches === undefined);
});
it("EachWordSeparately1", () => {
@@ -403,13 +403,13 @@ describe("PatternMatcher", () => {
it("MixedCasing", () => {
const matches = getAllMatches("AddMetadataReference", "mEta");
assert(matches === undefined);
assert.isTrue(matches === undefined);
});
it("MixedCasing2", () => {
const matches = getAllMatches("AddMetadataReference", "Data");
assert(matches === undefined);
assert.isTrue(matches === undefined);
});
it("AsteriskSplit", () => {
@@ -421,7 +421,7 @@ describe("PatternMatcher", () => {
it("LowercaseSubstring1", () => {
const matches = getAllMatches("Operator", "a");
assert(matches === undefined);
assert.isTrue(matches === undefined);
});
it("LowercaseSubstring2", () => {
@@ -441,7 +441,7 @@ describe("PatternMatcher", () => {
it("DottedPattern2", () => {
const match = getFirstMatchForDottedPattern("Foo.Bar.Baz", "Quux", "C.Q");
assert(match === undefined);
assert.isTrue(match === undefined);
});
it("DottedPattern3", () => {
@@ -464,13 +464,13 @@ describe("PatternMatcher", () => {
it("DottedPattern6", () => {
const match = getFirstMatchForDottedPattern("Foo.Bar.Baz", "Quux", "F.F.B.B.Quux");
assert(match === undefined);
assert.isTrue(match === undefined);
});
it("DottedPattern7", () => {
let match = getFirstMatch("UIElement", "UIElement");
match = getFirstMatch("GetKeyword", "UIElement");
assert(match === undefined);
assert.isTrue(match === undefined);
});
});
@@ -508,8 +508,8 @@ describe("PatternMatcher", () => {
}
function assertInRange(val: number, low: number, high: number) {
assert(val >= low);
assert(val <= high);
assert.isTrue(val >= low);
assert.isTrue(val <= high);
}
function verifyBreakIntoCharacterSpans(original: string, ...parts: string[]): void {
@@ -521,6 +521,6 @@ describe("PatternMatcher", () => {
}
function assertContainsKind(kind: ts.PatternMatchKind, results: ts.PatternMatch[]) {
assert(ts.forEach(results, r => r.kind === kind));
assert.isTrue(ts.forEach(results, r => r.kind === kind));
}
});
@@ -18,7 +18,7 @@ describe("PreProcessFile:", () => {
return;
}
if (!expected) {
assert(false, `Expected ${JSON.stringify(expected)}, got ${JSON.stringify(actual)}`);
assert.isTrue(false, `Expected ${JSON.stringify(expected)}, got ${JSON.stringify(actual)}`);
}
assert.equal(actual.length, expected.length, `[${kind}] Actual array's length does not match expected length. Expected files: ${JSON.stringify(expected)}, actual files: ${JSON.stringify(actual)}`);
+37 -36
View File
@@ -1,5 +1,7 @@
/// <reference path="..\harness.ts" />
const expect: typeof _chai.expect = _chai.expect;
namespace ts.server {
let lastWrittenToHost: string;
const noopFileWatcher: FileWatcher = { close: noop };
@@ -83,7 +85,7 @@ namespace ts.server {
}
};
assert.throws(() => session.executeCommand(req));
expect(() => session.executeCommand(req)).to.throw();
});
it("should output an error response when a command does not exist", () => {
const req: protocol.Request = {
@@ -102,7 +104,7 @@ namespace ts.server {
request_seq: 0,
success: false
};
assert.deepEqual(lastSent, expected);
expect(lastSent).to.deep.equal(expected);
});
it("should return a tuple containing the response and if a response is required on success", () => {
const req: protocol.ConfigureRequest = {
@@ -117,18 +119,17 @@ namespace ts.server {
}
};
assert.deepEqual(session.executeCommand(req), {
expect(session.executeCommand(req)).to.deep.equal({
responseRequired: false
});
const expected: protocol.Response = {
expect(lastSent).to.deep.equal({
command: CommandNames.Configure,
type: "response",
success: true,
request_seq: 0,
seq: 0,
body: undefined
};
assert.deepEqual(lastSent, expected);
});
});
it("should handle literal types in request", () => {
const configureRequest: protocol.ConfigureRequest = {
@@ -313,15 +314,14 @@ namespace ts.server {
session.onMessage(JSON.stringify(req));
const expected: protocol.ConfigureResponse = {
expect(lastSent).to.deep.equal(<protocol.ConfigureResponse>{
command: CommandNames.Configure,
type: "response",
success: true,
request_seq: 0,
seq: 0,
body: undefined
};
assert.deepEqual(lastSent, expected);
});
});
});
@@ -333,9 +333,9 @@ namespace ts.server {
const resultMsg = `Content-Length: ${len}\r\n\r\n${strmsg}\n`;
session.send = Session.prototype.send;
assert.isDefined(session.send);
session.send(msg);
assert.equal(lastWrittenToHost, resultMsg);
assert(session.send);
expect(session.send(msg)).to.not.exist; // tslint:disable-line no-unused-expression
expect(lastWrittenToHost).to.equal(resultMsg);
});
});
@@ -352,7 +352,11 @@ namespace ts.server {
session.addProtocolHandler(command, () => result);
assert.deepEqual(session.executeCommand({ command, seq: 0, type: "request" }), result);
expect(session.executeCommand({
command,
seq: 0,
type: "request"
})).to.deep.equal(result);
});
it("throws when a duplicate handler is passed", () => {
const respBody = {
@@ -366,7 +370,8 @@ namespace ts.server {
session.addProtocolHandler(command, () => resp);
assert.throws(() => session.addProtocolHandler(command, () => resp), `Protocol handler already exists for command "${command}"`);
expect(() => session.addProtocolHandler(command, () => resp))
.to.throw(`Protocol handler already exists for command "${command}"`);
});
});
@@ -379,13 +384,12 @@ namespace ts.server {
session.event(info, evt);
const expected: protocol.Event = {
expect(lastSent).to.deep.equal({
type: "event",
seq: 0,
event: evt,
body: info
};
assert.deepEqual(lastSent, expected);
});
});
});
@@ -400,15 +404,14 @@ namespace ts.server {
session.output(body, command, /*reqSeq*/ 0);
const expected: protocol.Response = {
expect(lastSent).to.deep.equal({
seq: 0,
request_seq: 0,
type: "response",
command,
body,
success: true
};
assert.deepEqual(lastSent, expected);
});
});
});
});
@@ -469,16 +472,14 @@ namespace ts.server {
session.onMessage(JSON.stringify(request));
const lastSent = session.lastSent as protocol.Response;
assert.deepEqual({ ...lastSent, message: undefined }, {
request_seq: 0,
expect(lastSent).to.contain({
seq: 0,
type: "response",
command,
success: false,
message: undefined,
success: false
});
assert(ts.stringContains(lastSent.message, "myMessage") && ts.stringContains(lastSent.message, "f1"));
expect(lastSent.message).has.string("myMessage").and.has.string("f1");
});
});
@@ -518,24 +519,23 @@ namespace ts.server {
session.output(body, command, /*reqSeq*/ 0);
const expected: protocol.Response = {
expect(session.lastSent).to.deep.equal({
seq: 0,
request_seq: 0,
type: "response",
command,
body,
success: true
};
assert.deepEqual(session.lastSent, expected);
});
});
it("can add and respond to new protocol handlers", () => {
const session = new TestSession();
assert.deepEqual(session.executeCommand({
expect(session.executeCommand({
seq: 0,
type: "request",
command: session.customHandler
}), {
})).to.deep.equal({
response: undefined,
responseRequired: true
});
@@ -545,7 +545,8 @@ namespace ts.server {
new class extends TestSession {
constructor() {
super();
assert(this.projectService instanceof ProjectService);
assert(this.projectService);
expect(this.projectService).to.be.instanceOf(ProjectService);
}
}();
});
@@ -669,9 +670,9 @@ namespace ts.server {
// Add an event handler
cli.on("testevent", (eventinfo) => {
assert.equal(eventinfo, toEvent);
expect(eventinfo).to.equal(toEvent);
responses++;
assert.equal(responses, 1);
expect(responses).to.equal(1);
});
// Trigger said event from the server
@@ -681,8 +682,8 @@ namespace ts.server {
cli.execute("echo", toEcho, (resp) => {
assert(resp.success, resp.message);
responses++;
assert.equal(responses, 2);
assert.deepEqual(resp.body, toEcho);
expect(responses).to.equal(2);
expect(resp.body).to.deep.equal(toEcho);
});
// Queue a configure command
@@ -694,7 +695,7 @@ namespace ts.server {
}, (resp) => {
assert(resp.success, resp.message);
responses++;
assert.equal(responses, 3);
expect(responses).to.equal(3);
done();
});
+29 -31
View File
@@ -103,7 +103,7 @@ namespace M
/*body */ createBlock(statements)
);
changeTracker.insertNodeBefore(sourceFile, /*before*/findChild("M2", sourceFile), newFunction, { suffix: newLineCharacter });
changeTracker.insertNodeBefore(sourceFile, /*before*/findChild("M2", sourceFile), newFunction);
// replace statements with return statement
const newStatement = createReturn(
@@ -129,12 +129,11 @@ function bar() {
changeTracker.deleteRange(sourceFile, { pos: text.indexOf("function foo"), end: text.indexOf("function bar") });
});
}
function findVariableStatementContaining(name: string, sourceFile: SourceFile) {
const varDecl = findChild(name, sourceFile);
assert.equal(varDecl.kind, SyntaxKind.VariableDeclaration);
const varStatement = varDecl.parent.parent;
assert.equal(varStatement.kind, SyntaxKind.VariableStatement);
return varStatement;
function findVariableStatementContaining(name: string, sourceFile: SourceFile): VariableStatement {
return cast(findVariableDeclarationContaining(name, sourceFile).parent.parent, isVariableStatement);
}
function findVariableDeclarationContaining(name: string, sourceFile: SourceFile): VariableDeclaration {
return cast(findChild(name, sourceFile), isVariableDeclaration);
}
{
const text = `
@@ -306,11 +305,11 @@ var y; // comment 4
var z = 3; // comment 5
// comment 6
var a = 4; // comment 7`;
runSingleFileTest("insertNodeAt1", /*placeOpenBraceOnNewLineForFunctions*/ true, text, /*validateNodes*/ true, (sourceFile, changeTracker) => {
changeTracker.insertNodeAt(sourceFile, text.indexOf("var y"), createTestClass(), { suffix: newLineCharacter });
runSingleFileTest("insertNodeBefore3", /*placeOpenBraceOnNewLineForFunctions*/ true, text, /*validateNodes*/ true, (sourceFile, changeTracker) => {
changeTracker.insertNodeBefore(sourceFile, findVariableStatementContaining("y", sourceFile), createTestClass());
});
runSingleFileTest("insertNodeAt2", /*placeOpenBraceOnNewLineForFunctions*/ true, text, /*validateNodes*/ false, (sourceFile, changeTracker) => {
changeTracker.insertNodeAt(sourceFile, text.indexOf("; // comment 4"), createTestVariableDeclaration("z1"));
runSingleFileTest("insertNodeAfterVariableDeclaration", /*placeOpenBraceOnNewLineForFunctions*/ true, text, /*validateNodes*/ false, (sourceFile, changeTracker) => {
changeTracker.insertNodeAfter(sourceFile, findVariableDeclarationContaining("y", sourceFile), createTestVariableDeclaration("z1"));
});
}
{
@@ -325,23 +324,22 @@ namespace M {
var a = 4; // comment 7
}`;
runSingleFileTest("insertNodeBefore1", /*placeOpenBraceOnNewLineForFunctions*/ true, text, /*validateNodes*/ true, (sourceFile, changeTracker) => {
changeTracker.insertNodeBefore(sourceFile, findVariableStatementContaining("y", sourceFile), createTestClass(), { suffix: newLineCharacter });
changeTracker.insertNodeBefore(sourceFile, findVariableStatementContaining("y", sourceFile), createTestClass());
});
runSingleFileTest("insertNodeBefore2", /*placeOpenBraceOnNewLineForFunctions*/ true, text, /*validateNodes*/ true, (sourceFile, changeTracker) => {
changeTracker.insertNodeBefore(sourceFile, findChild("M", sourceFile), createTestClass(), { suffix: newLineCharacter });
changeTracker.insertNodeBefore(sourceFile, findChild("M", sourceFile), createTestClass());
});
runSingleFileTest("insertNodeAfter1", /*placeOpenBraceOnNewLineForFunctions*/ true, text, /*validateNodes*/ true, (sourceFile, changeTracker) => {
changeTracker.insertNodeAfter(sourceFile, findVariableStatementContaining("y", sourceFile), createTestClass(), { suffix: newLineCharacter });
changeTracker.insertNodeAfter(sourceFile, findVariableStatementContaining("y", sourceFile), createTestClass());
});
runSingleFileTest("insertNodeAfter2", /*placeOpenBraceOnNewLineForFunctions*/ true, text, /*validateNodes*/ true, (sourceFile, changeTracker) => {
changeTracker.insertNodeAfter(sourceFile, findChild("M", sourceFile), createTestClass(), { prefix: newLineCharacter });
changeTracker.insertNodeAfter(sourceFile, findChild("M", sourceFile), createTestClass());
});
}
function findOpenBraceForConstructor(sourceFile: SourceFile) {
function findConstructor(sourceFile: SourceFile): ConstructorDeclaration {
const classDecl = <ClassDeclaration>sourceFile.statements[0];
const constructorDecl = forEach(classDecl.members, m => m.kind === SyntaxKind.Constructor && (<ConstructorDeclaration>m).body && <ConstructorDeclaration>m);
return constructorDecl.body.getFirstToken();
return find<ClassElement, ConstructorDeclaration>(classDecl.members, (m): m is ConstructorDeclaration => isConstructorDeclaration(m) && !!m.body)!;
}
function createTestSuperCall() {
const superCall = createCall(
@@ -359,8 +357,8 @@ class A {
}
}
`;
runSingleFileTest("insertNodeAfter3", /*placeOpenBraceOnNewLineForFunctions*/ false, text1, /*validateNodes*/ false, (sourceFile, changeTracker) => {
changeTracker.insertNodeAfter(sourceFile, findOpenBraceForConstructor(sourceFile), createTestSuperCall(), { suffix: newLineCharacter });
runSingleFileTest("insertNodeAtConstructorStart", /*placeOpenBraceOnNewLineForFunctions*/ false, text1, /*validateNodes*/ false, (sourceFile, changeTracker) => {
changeTracker.insertNodeAtConstructorStart(sourceFile, findConstructor(sourceFile), createTestSuperCall());
});
const text2 = `
class A {
@@ -370,7 +368,7 @@ class A {
}
`;
runSingleFileTest("insertNodeAfter4", /*placeOpenBraceOnNewLineForFunctions*/ false, text2, /*validateNodes*/ false, (sourceFile, changeTracker) => {
changeTracker.insertNodeAfter(sourceFile, findVariableStatementContaining("x", sourceFile), createTestSuperCall(), { suffix: newLineCharacter });
changeTracker.insertNodeAfter(sourceFile, findVariableStatementContaining("x", sourceFile), createTestSuperCall());
});
const text3 = `
class A {
@@ -379,8 +377,8 @@ class A {
}
}
`;
runSingleFileTest("insertNodeAfter3-block with newline", /*placeOpenBraceOnNewLineForFunctions*/ false, text3, /*validateNodes*/ false, (sourceFile, changeTracker) => {
changeTracker.insertNodeAfter(sourceFile, findOpenBraceForConstructor(sourceFile), createTestSuperCall(), { suffix: newLineCharacter });
runSingleFileTest("insertNodeAtConstructorStart-block with newline", /*placeOpenBraceOnNewLineForFunctions*/ false, text3, /*validateNodes*/ false, (sourceFile, changeTracker) => {
changeTracker.insertNodeAtConstructorStart(sourceFile, findConstructor(sourceFile), createTestSuperCall());
});
}
{
@@ -638,7 +636,7 @@ class A {
}
const insertAfter = findChild("x", sourceFile);
for (const newNode of newNodes) {
changeTracker.insertNodeAfter(sourceFile, insertAfter, newNode, { suffix: newLineCharacter });
changeTracker.insertNodeAfter(sourceFile, insertAfter, newNode);
}
});
}
@@ -649,7 +647,7 @@ class A {
}
`;
runSingleFileTest("insertNodeAfterInClass1", /*placeOpenBraceOnNewLineForFunctions*/ false, text, /*validateNodes*/ false, (sourceFile, changeTracker) => {
changeTracker.insertNodeAfter(sourceFile, findChild("x", sourceFile), createProperty(undefined, undefined, "a", undefined, createKeywordTypeNode(SyntaxKind.BooleanKeyword), undefined), { suffix: newLineCharacter });
changeTracker.insertNodeAfter(sourceFile, findChild("x", sourceFile), createProperty(undefined, undefined, "a", undefined, createKeywordTypeNode(SyntaxKind.BooleanKeyword), undefined));
});
}
{
@@ -659,7 +657,7 @@ class A {
}
`;
runSingleFileTest("insertNodeAfterInClass2", /*placeOpenBraceOnNewLineForFunctions*/ false, text, /*validateNodes*/ false, (sourceFile, changeTracker) => {
changeTracker.insertNodeAfter(sourceFile, findChild("x", sourceFile), createProperty(undefined, undefined, "a", undefined, createKeywordTypeNode(SyntaxKind.BooleanKeyword), undefined), { suffix: newLineCharacter });
changeTracker.insertNodeAfter(sourceFile, findChild("x", sourceFile), createProperty(undefined, undefined, "a", undefined, createKeywordTypeNode(SyntaxKind.BooleanKeyword), undefined));
});
}
{
@@ -698,7 +696,7 @@ class A {
/*questionToken*/ undefined,
createKeywordTypeNode(SyntaxKind.AnyKeyword),
/*initializer*/ undefined);
changeTracker.insertNodeAfter(sourceFile, findChild("x", sourceFile), newNode, { suffix: newLineCharacter });
changeTracker.insertNodeAfter(sourceFile, findChild("x", sourceFile), newNode);
});
}
{
@@ -716,7 +714,7 @@ class A {
/*questionToken*/ undefined,
createKeywordTypeNode(SyntaxKind.AnyKeyword),
/*initializer*/ undefined);
changeTracker.insertNodeAfter(sourceFile, findChild("x", sourceFile), newNode, { suffix: newLineCharacter });
changeTracker.insertNodeAfter(sourceFile, findChild("x", sourceFile), newNode);
});
}
{
@@ -733,7 +731,7 @@ interface A {
/*questionToken*/ undefined,
createKeywordTypeNode(SyntaxKind.AnyKeyword),
/*initializer*/ undefined);
changeTracker.insertNodeAfter(sourceFile, findChild("x", sourceFile), newNode, { suffix: newLineCharacter });
changeTracker.insertNodeAfter(sourceFile, findChild("x", sourceFile), newNode);
});
}
{
@@ -750,7 +748,7 @@ interface A {
/*questionToken*/ undefined,
createKeywordTypeNode(SyntaxKind.AnyKeyword),
/*initializer*/ undefined);
changeTracker.insertNodeAfter(sourceFile, findChild("x", sourceFile), newNode, { suffix: newLineCharacter });
changeTracker.insertNodeAfter(sourceFile, findChild("x", sourceFile), newNode);
});
}
{
@@ -759,7 +757,7 @@ let x = foo
`;
runSingleFileTest("insertNodeInStatementListAfterNodeWithoutSeparator1", /*placeOpenBraceOnNewLineForFunctions*/ false, text, /*validateNodes*/ false, (sourceFile, changeTracker) => {
const newNode = createStatement(createParen(createLiteral(1)));
changeTracker.insertNodeAfter(sourceFile, findVariableStatementContaining("x", sourceFile), newNode, { suffix: newLineCharacter });
changeTracker.insertNodeAfter(sourceFile, findVariableStatementContaining("x", sourceFile), newNode);
});
}
});
+9 -9
View File
@@ -33,20 +33,20 @@ namespace ts.textStorage {
for (let offset = 0; offset < end - start; offset++) {
const pos1 = ts1.lineOffsetToPosition(line + 1, offset + 1);
const pos2 = ts2.lineOffsetToPosition(line + 1, offset + 1);
assert(pos1 === pos2, `lineOffsetToPosition ${line + 1}-${offset + 1}: expected ${pos1} to equal ${pos2}`);
assert.isTrue(pos1 === pos2, `lineOffsetToPosition ${line + 1}-${offset + 1}: expected ${pos1} to equal ${pos2}`);
}
const {start: start1, length: length1 } = ts1.lineToTextSpan(line);
const {start: start2, length: length2 } = ts2.lineToTextSpan(line);
assert(start1 === start2, `lineToTextSpan ${line}::start:: expected ${start1} to equal ${start2}`);
assert(length1 === length2, `lineToTextSpan ${line}::length:: expected ${length1} to equal ${length2}`);
assert.isTrue(start1 === start2, `lineToTextSpan ${line}::start:: expected ${start1} to equal ${start2}`);
assert.isTrue(length1 === length2, `lineToTextSpan ${line}::length:: expected ${length1} to equal ${length2}`);
}
for (let pos = 0; pos < f.content.length; pos++) {
const { line: line1, offset: offset1 } = ts1.positionToLineOffset(pos);
const { line: line2, offset: offset2 } = ts2.positionToLineOffset(pos);
assert(line1 === line2, `positionToLineOffset ${pos}::line:: expected ${line1} to equal ${line2}`);
assert(offset1 === offset2, `positionToLineOffset ${pos}::offset:: expected ${offset1} to equal ${offset2}`);
assert.isTrue(line1 === line2, `positionToLineOffset ${pos}::line:: expected ${line1} to equal ${line2}`);
assert.isTrue(offset1 === offset2, `positionToLineOffset ${pos}::offset:: expected ${offset1} to equal ${offset2}`);
}
});
@@ -55,16 +55,16 @@ namespace ts.textStorage {
const ts1 = new server.TextStorage(host, server.asNormalizedPath(f.path));
ts1.getSnapshot();
assert(!ts1.hasScriptVersionCache_TestOnly(), "should not have script version cache - 1");
assert.isTrue(!ts1.hasScriptVersionCache_TestOnly(), "should not have script version cache - 1");
ts1.edit(0, 5, " ");
assert(ts1.hasScriptVersionCache_TestOnly(), "have script version cache - 1");
assert.isTrue(ts1.hasScriptVersionCache_TestOnly(), "have script version cache - 1");
ts1.useText();
assert(!ts1.hasScriptVersionCache_TestOnly(), "should not have script version cache - 2");
assert.isTrue(!ts1.hasScriptVersionCache_TestOnly(), "should not have script version cache - 2");
ts1.getLineInfo(0);
assert(ts1.hasScriptVersionCache_TestOnly(), "have script version cache - 2");
assert.isTrue(ts1.hasScriptVersionCache_TestOnly(), "have script version cache - 2");
});
});
}
+13 -13
View File
@@ -124,7 +124,7 @@ namespace ts.tscWatch {
function assertWatchDiagnosticAt(host: WatchedSystem, outputAt: number, diagnosticMessage: DiagnosticMessage) {
const output = host.getOutput()[outputAt];
assert(endsWith(output, getWatchDiagnosticWithoutDate(host, diagnosticMessage)), "outputs[" + outputAt + "] is " + output);
assert.isTrue(endsWith(output, getWatchDiagnosticWithoutDate(host, diagnosticMessage)), "outputs[" + outputAt + "] is " + output);
}
function getWatchDiagnosticWithoutDate(host: WatchedSystem, diagnosticMessage: DiagnosticMessage) {
@@ -1530,11 +1530,11 @@ namespace ts.tscWatch {
function verifyEmittedFiles(host: WatchedSystem, emittedFiles: EmittedFile[]) {
for (const { path, content, shouldBeWritten } of emittedFiles) {
if (shouldBeWritten) {
assert(host.fileExists(path), `Expected file ${path} to be present`);
assert.isTrue(host.fileExists(path), `Expected file ${path} to be present`);
assert.equal(host.readFile(path), content, `Contents of file ${path} do not match`);
}
else {
assert(!host.fileExists(path), `Expected file ${path} to be absent`);
assert.isNotTrue(host.fileExists(path), `Expected file ${path} to be absent`);
}
}
}
@@ -1710,7 +1710,7 @@ namespace ts.tscWatch {
return false;
}
fileExistsIsCalled = true;
assert(fileName.indexOf("/f2.") !== -1);
assert.isTrue(fileName.indexOf("/f2.") !== -1);
return originalFileExists.call(host, fileName);
};
@@ -1725,7 +1725,7 @@ namespace ts.tscWatch {
getDiagnosticModuleNotFoundOfFile(watch(), root, "f2")
], /*errorsPosition*/ ExpectedOutputErrorsPosition.AfterFileChangeDetected);
assert(fileExistsIsCalled);
assert.isTrue(fileExistsIsCalled);
}
{
let fileExistsCalled = false;
@@ -1734,7 +1734,7 @@ namespace ts.tscWatch {
return false;
}
fileExistsCalled = true;
assert(fileName.indexOf("/f1.") !== -1);
assert.isTrue(fileName.indexOf("/f1.") !== -1);
return originalFileExists.call(host, fileName);
};
@@ -1745,7 +1745,7 @@ namespace ts.tscWatch {
host.runQueuedTimeoutCallbacks();
checkOutputErrors(host, [f1IsNotModule, cannotFindFoo], /*errorsPosition*/ ExpectedOutputErrorsPosition.AfterFileChangeDetected);
assert(fileExistsCalled);
assert.isTrue(fileExistsCalled);
}
});
@@ -1778,7 +1778,7 @@ namespace ts.tscWatch {
const watch = createWatchOfFilesAndCompilerOptions([root.path], host, { module: ModuleKind.AMD });
assert(fileExistsCalledForBar, "'fileExists' should be called");
assert.isTrue(fileExistsCalledForBar, "'fileExists' should be called");
checkOutputErrors(host, [
getDiagnosticModuleNotFoundOfFile(watch(), root, "bar")
], /*errorsPosition*/ ExpectedOutputErrorsPosition.AfterCompilationStarting);
@@ -1789,7 +1789,7 @@ namespace ts.tscWatch {
host.runQueuedTimeoutCallbacks();
checkOutputErrors(host, emptyArray, /*errorsPosition*/ ExpectedOutputErrorsPosition.AfterFileChangeDetected);
assert(fileExistsCalledForBar, "'fileExists' should be called.");
assert.isTrue(fileExistsCalledForBar, "'fileExists' should be called.");
});
it("should compile correctly when resolved module goes missing and then comes back (module is not part of the root)", () => {
@@ -1820,13 +1820,13 @@ namespace ts.tscWatch {
const watch = createWatchOfFilesAndCompilerOptions([root.path], host, { module: ModuleKind.AMD });
assert(fileExistsCalledForBar, "'fileExists' should be called");
assert.isTrue(fileExistsCalledForBar, "'fileExists' should be called");
checkOutputErrors(host, emptyArray, /*errorsPosition*/ ExpectedOutputErrorsPosition.AfterCompilationStarting);
fileExistsCalledForBar = false;
host.reloadFS(files);
host.runQueuedTimeoutCallbacks();
assert(fileExistsCalledForBar, "'fileExists' should be called.");
assert.isTrue(fileExistsCalledForBar, "'fileExists' should be called.");
checkOutputErrors(host, [
getDiagnosticModuleNotFoundOfFile(watch(), root, "bar")
], /*errorsPosition*/ ExpectedOutputErrorsPosition.AfterFileChangeDetected);
@@ -1835,7 +1835,7 @@ namespace ts.tscWatch {
host.reloadFS(filesWithImported);
host.checkTimeoutQueueLengthAndRun(1);
checkOutputErrors(host, emptyArray, /*errorsPosition*/ ExpectedOutputErrorsPosition.AfterFileChangeDetected);
assert(fileExistsCalledForBar, "'fileExists' should be called.");
assert.isTrue(fileExistsCalledForBar, "'fileExists' should be called.");
});
it("works when module resolution changes to ambient module", () => {
@@ -2037,7 +2037,7 @@ declare module "fs" {
checkProgramActualFiles(watch(), mapDefined(files, f => f === configFile ? undefined : f.path));
const outputFile1 = changeExtension((outputFolder + getBaseFileName(file1.path)), ".js");
assert(host.fileExists(outputFile1));
assert.isTrue(host.fileExists(outputFile1));
assert.equal(host.readFile(outputFile1), file1.content + host.newLine);
});
});
+11 -11
View File
@@ -11,20 +11,20 @@ namespace ts {
function assertParseError(jsonText: string) {
const parsed = ts.parseConfigFileTextToJson("/apath/tsconfig.json", jsonText);
assert.deepEqual(parsed.config, {});
assert(undefined !== parsed.error);
assert.isTrue(undefined !== parsed.error);
}
function assertParseErrorWithExcludesKeyword(jsonText: string) {
{
const parsed = ts.parseConfigFileTextToJson("/apath/tsconfig.json", jsonText);
const parsedCommand = ts.parseJsonConfigFileContent(parsed.config, ts.sys, "tests/cases/unittests");
assert(parsedCommand.errors && parsedCommand.errors.length === 1 &&
assert.isTrue(parsedCommand.errors && parsedCommand.errors.length === 1 &&
parsedCommand.errors[0].code === ts.Diagnostics.Unknown_option_excludes_Did_you_mean_exclude.code);
}
{
const parsed = ts.parseJsonText("/apath/tsconfig.json", jsonText);
const parsedCommand = ts.parseJsonSourceFileConfigFileContent(parsed, ts.sys, "tests/cases/unittests");
assert(parsedCommand.errors && parsedCommand.errors.length === 1 &&
assert.isTrue(parsedCommand.errors && parsedCommand.errors.length === 1 &&
parsedCommand.errors[0].code === ts.Diagnostics.Unknown_option_excludes_Did_you_mean_exclude.code);
}
}
@@ -44,26 +44,26 @@ namespace ts {
function assertParseFileList(jsonText: string, configFileName: string, basePath: string, allFileList: string[], expectedFileList: string[]) {
{
const parsed = getParsedCommandJson(jsonText, configFileName, basePath, allFileList);
assert(arrayIsEqualTo(parsed.fileNames.sort(), expectedFileList.sort()));
assert.isTrue(arrayIsEqualTo(parsed.fileNames.sort(), expectedFileList.sort()));
}
{
const parsed = getParsedCommandJsonNode(jsonText, configFileName, basePath, allFileList);
assert(arrayIsEqualTo(parsed.fileNames.sort(), expectedFileList.sort()));
assert.isTrue(arrayIsEqualTo(parsed.fileNames.sort(), expectedFileList.sort()));
}
}
function assertParseFileDiagnostics(jsonText: string, configFileName: string, basePath: string, allFileList: string[], expectedDiagnosticCode: number, noLocation?: boolean) {
{
const parsed = getParsedCommandJson(jsonText, configFileName, basePath, allFileList);
assert(parsed.errors.length >= 0);
assert(parsed.errors.filter(e => e.code === expectedDiagnosticCode).length > 0, `Expected error code ${expectedDiagnosticCode} to be in ${JSON.stringify(parsed.errors)}`);
assert.isTrue(parsed.errors.length >= 0);
assert.isTrue(parsed.errors.filter(e => e.code === expectedDiagnosticCode).length > 0, `Expected error code ${expectedDiagnosticCode} to be in ${JSON.stringify(parsed.errors)}`);
}
{
const parsed = getParsedCommandJsonNode(jsonText, configFileName, basePath, allFileList);
assert(parsed.errors.length >= 0);
assert(parsed.errors.filter(e => e.code === expectedDiagnosticCode).length > 0, `Expected error code ${expectedDiagnosticCode} to be in ${JSON.stringify(parsed.errors)}`);
assert.isTrue(parsed.errors.length >= 0);
assert.isTrue(parsed.errors.filter(e => e.code === expectedDiagnosticCode).length > 0, `Expected error code ${expectedDiagnosticCode} to be in ${JSON.stringify(parsed.errors)}`);
if (!noLocation) {
assert(parsed.errors.filter(e => e.code === expectedDiagnosticCode && e.file && e.start && e.length).length > 0, `Expected error code ${expectedDiagnosticCode} to be in ${JSON.stringify(parsed.errors)} with location information`);
assert.isTrue(parsed.errors.filter(e => e.code === expectedDiagnosticCode && e.file && e.start && e.length).length > 0, `Expected error code ${expectedDiagnosticCode} to be in ${JSON.stringify(parsed.errors)} with location information`);
}
}
}
@@ -241,7 +241,7 @@ namespace ts {
},
files: ["file1.ts"]
};
assert(diagnostics.length === 2);
assert.isTrue(diagnostics.length === 2);
assert.equal(JSON.stringify(configJsonObject), JSON.stringify(expectedResult));
});
+128 -110
View File
@@ -468,8 +468,8 @@ namespace ts.projectSystem {
assert.equal(outputs[index], server.formatMessage(expectedEvent, nullLogger, Utils.byteLength, session.host.newLine));
if (isMostRecent) {
assert.equal(events.length, index + 1, JSON.stringify(events));
assert.equal(outputs.length, index + 1, JSON.stringify(outputs));
assert.strictEqual(events.length, index + 1, JSON.stringify(events));
assert.strictEqual(outputs.length, index + 1, JSON.stringify(outputs));
}
}
@@ -572,8 +572,8 @@ namespace ts.projectSystem {
const projectService = createProjectService(host);
const { configFileName, configFileErrors } = projectService.openClientFile(file1.path);
assert.isDefined(configFileName, "should find config file");
assert(!configFileErrors || configFileErrors.length === 0, `expect no errors in config file, got ${JSON.stringify(configFileErrors)}`);
assert(configFileName, "should find config file");
assert.isTrue(!configFileErrors || configFileErrors.length === 0, `expect no errors in config file, got ${JSON.stringify(configFileErrors)}`);
checkNumberOfInferredProjects(projectService, 0);
checkNumberOfConfiguredProjects(projectService, 1);
@@ -612,8 +612,8 @@ namespace ts.projectSystem {
const projectService = createProjectService(host);
const { configFileName, configFileErrors } = projectService.openClientFile(file1.path);
assert.isDefined(configFileName, "should find config file");
assert(!configFileErrors || configFileErrors.length === 0, `expect no errors in config file, got ${JSON.stringify(configFileErrors)}`);
assert(configFileName, "should find config file");
assert.isTrue(!configFileErrors || configFileErrors.length === 0, `expect no errors in config file, got ${JSON.stringify(configFileErrors)}`);
checkNumberOfInferredProjects(projectService, 0);
checkNumberOfConfiguredProjects(projectService, 1);
@@ -821,7 +821,7 @@ namespace ts.projectSystem {
host.reloadFS([file1, commonFile2, libFile]);
host.runQueuedTimeoutCallbacks();
checkNumberOfInferredProjects(projectService, 1);
assert.equal(projectService.inferredProjects[0], project, "Inferred project should be same");
assert.strictEqual(projectService.inferredProjects[0], project, "Inferred project should be same");
checkProjectRootFiles(project, [file1.path]);
checkProjectActualFiles(project, [file1.path, libFile.path, commonFile2.path]);
diags = session.executeCommand(getErrRequest).response as server.protocol.Diagnostic[];
@@ -1024,11 +1024,11 @@ namespace ts.projectSystem {
projectService.openExternalProject({ rootFiles: toExternalFiles([file1.path]), options: {}, projectFileName: proj1name });
const proj1 = projectService.findProject(proj1name);
assert(proj1.languageServiceEnabled);
assert.isTrue(proj1.languageServiceEnabled);
projectService.openExternalProject({ rootFiles: toExternalFiles([file2.path]), options: {}, projectFileName: proj2name });
const proj2 = projectService.findProject(proj2name);
assert(proj2.languageServiceEnabled);
assert.isTrue(proj2.languageServiceEnabled);
projectService.openExternalProject({ rootFiles: toExternalFiles([file3.path]), options: {}, projectFileName: proj3name });
const proj3 = projectService.findProject(proj3name);
@@ -1100,18 +1100,18 @@ namespace ts.projectSystem {
projectService.openClientFile(file1.path);
checkNumberOfConfiguredProjects(projectService, 1);
const project = projectService.configuredProjects.get(configFile.path);
assert(project.hasOpenRef()); // file1
assert.isTrue(project.hasOpenRef()); // file1
projectService.closeClientFile(file1.path);
checkNumberOfConfiguredProjects(projectService, 1);
assert.equal(projectService.configuredProjects.get(configFile.path), project);
assert.strictEqual(projectService.configuredProjects.get(configFile.path), project);
assert.isFalse(project.hasOpenRef()); // No open files
assert.isFalse(project.isClosed());
projectService.openClientFile(file2.path);
checkNumberOfConfiguredProjects(projectService, 1);
assert.equal(projectService.configuredProjects.get(configFile.path), project);
assert(project.hasOpenRef()); // file2
assert.strictEqual(projectService.configuredProjects.get(configFile.path), project);
assert.isTrue(project.hasOpenRef()); // file2
assert.isFalse(project.isClosed());
});
@@ -1134,18 +1134,18 @@ namespace ts.projectSystem {
projectService.openClientFile(file1.path);
checkNumberOfConfiguredProjects(projectService, 1);
const project = projectService.configuredProjects.get(configFile.path);
assert(project.hasOpenRef()); // file1
assert.isTrue(project.hasOpenRef()); // file1
projectService.closeClientFile(file1.path);
checkNumberOfConfiguredProjects(projectService, 1);
assert.equal(projectService.configuredProjects.get(configFile.path), project);
assert.strictEqual(projectService.configuredProjects.get(configFile.path), project);
assert.isFalse(project.hasOpenRef()); // No files
assert.isFalse(project.isClosed());
projectService.openClientFile(libFile.path);
checkNumberOfConfiguredProjects(projectService, 0);
assert.isFalse(project.hasOpenRef()); // No files + project closed
assert(project.isClosed());
assert.isTrue(project.isClosed());
});
it("should not close external project with no open files", () => {
@@ -1184,6 +1184,24 @@ namespace ts.projectSystem {
checkNumberOfInferredProjects(projectService, 0);
});
it("external project for dynamic file", () => {
const externalProjectName = "^ScriptDocument1 file1.ts";
const externalFiles = toExternalFiles(["^ScriptDocument1 file1.ts"]);
const host = createServerHost([]);
const projectService = createProjectService(host);
projectService.openExternalProject({
rootFiles: externalFiles,
options: {},
projectFileName: externalProjectName
});
checkNumberOfExternalProjects(projectService, 1);
checkNumberOfInferredProjects(projectService, 0);
externalFiles[0].content = "let x =1;";
projectService.applyChangesInOpenFiles(externalFiles, [], []);
});
it("external project that included config files", () => {
const file1 = {
path: "/a/b/f1.ts",
@@ -1233,28 +1251,28 @@ namespace ts.projectSystem {
// open client file - should not lead to creation of inferred project
projectService.openClientFile(file1.path, file1.content);
checkNumberOfProjects(projectService, { configuredProjects: 2 });
assert.equal(projectService.configuredProjects.get(config1.path), proj1);
assert.equal(projectService.configuredProjects.get(config2.path), proj2);
assert.strictEqual(projectService.configuredProjects.get(config1.path), proj1);
assert.strictEqual(projectService.configuredProjects.get(config2.path), proj2);
projectService.openClientFile(file3.path, file3.content);
checkNumberOfProjects(projectService, { configuredProjects: 2, inferredProjects: 1 });
assert.equal(projectService.configuredProjects.get(config1.path), proj1);
assert.equal(projectService.configuredProjects.get(config2.path), proj2);
assert.strictEqual(projectService.configuredProjects.get(config1.path), proj1);
assert.strictEqual(projectService.configuredProjects.get(config2.path), proj2);
projectService.closeExternalProject(externalProjectName);
// open file 'file1' from configured project keeps project alive
checkNumberOfProjects(projectService, { configuredProjects: 1, inferredProjects: 1 });
assert.equal(projectService.configuredProjects.get(config1.path), proj1);
assert.strictEqual(projectService.configuredProjects.get(config1.path), proj1);
assert.isUndefined(projectService.configuredProjects.get(config2.path));
projectService.closeClientFile(file3.path);
checkNumberOfProjects(projectService, { configuredProjects: 1 });
assert.equal(projectService.configuredProjects.get(config1.path), proj1);
assert.strictEqual(projectService.configuredProjects.get(config1.path), proj1);
assert.isUndefined(projectService.configuredProjects.get(config2.path));
projectService.closeClientFile(file1.path);
checkNumberOfProjects(projectService, { configuredProjects: 1 });
assert.equal(projectService.configuredProjects.get(config1.path), proj1);
assert.strictEqual(projectService.configuredProjects.get(config1.path), proj1);
assert.isUndefined(projectService.configuredProjects.get(config2.path));
projectService.openClientFile(file2.path, file2.content);
@@ -1286,14 +1304,14 @@ namespace ts.projectSystem {
const completions1 = service.externalProjects[0].getLanguageService().getCompletionsAtPosition(f1.path, 2, { includeExternalModuleExports: false });
// should contain completions for string
assert(completions1.entries.some(e => e.name === "charAt"), "should contain 'charAt'");
assert.isTrue(completions1.entries.some(e => e.name === "charAt"), "should contain 'charAt'");
assert.isFalse(completions1.entries.some(e => e.name === "toExponential"), "should not contain 'toExponential'");
service.closeClientFile(f2.path);
const completions2 = service.externalProjects[0].getLanguageService().getCompletionsAtPosition(f1.path, 2, { includeExternalModuleExports: false });
// should contain completions for string
assert.isFalse(completions2.entries.some(e => e.name === "charAt"), "should not contain 'charAt'");
assert(completions2.entries.some(e => e.name === "toExponential"), "should contain 'toExponential'");
assert.isTrue(completions2.entries.some(e => e.name === "toExponential"), "should contain 'toExponential'");
});
it("clear mixed content file after closing", () => {
@@ -1317,7 +1335,7 @@ namespace ts.projectSystem {
checkProjectActualFiles(service.externalProjects[0], [f1.path, f2.path, libFile.path]);
const completions1 = service.externalProjects[0].getLanguageService().getCompletionsAtPosition(f1.path, 0, { includeExternalModuleExports: false });
assert(completions1.entries.some(e => e.name === "somelongname"), "should contain 'somelongname'");
assert.isTrue(completions1.entries.some(e => e.name === "somelongname"), "should contain 'somelongname'");
service.closeClientFile(f2.path);
const completions2 = service.externalProjects[0].getLanguageService().getCompletionsAtPosition(f1.path, 0, { includeExternalModuleExports: false });
@@ -1387,16 +1405,16 @@ namespace ts.projectSystem {
});
checkNumberOfProjects(projectService, { configuredProjects: 1 });
assert.equal(projectService.configuredProjects.get(configFile.path), project);
assert.strictEqual(projectService.configuredProjects.get(configFile.path), project);
projectService.closeExternalProject(externalProjectName);
// configured project is alive since file is still open
checkNumberOfProjects(projectService, { configuredProjects: 1 });
assert.equal(projectService.configuredProjects.get(configFile.path), project);
assert.strictEqual(projectService.configuredProjects.get(configFile.path), project);
projectService.closeClientFile(file1.path);
checkNumberOfProjects(projectService, { configuredProjects: 1 });
assert.equal(projectService.configuredProjects.get(configFile.path), project);
assert.strictEqual(projectService.configuredProjects.get(configFile.path), project);
projectService.openClientFile(file2.path);
checkNumberOfProjects(projectService, { inferredProjects: 1 });
@@ -1910,7 +1928,7 @@ namespace ts.projectSystem {
// The configured project should now be updated to include html file
checkNumberOfProjects(projectService, { configuredProjects: 1 });
assert.equal(configuredProjectAt(projectService, 0), configuredProj, "Same configured project should be updated");
assert.strictEqual(configuredProjectAt(projectService, 0), configuredProj, "Same configured project should be updated");
checkProjectActualFiles(configuredProjectAt(projectService, 0), [file1.path, file2.path, config.path]);
// Open HTML file
@@ -2176,18 +2194,18 @@ namespace ts.projectSystem {
projectService.openClientFile(file2.path);
checkNumberOfProjects(projectService, { configuredProjects: 1 });
const project1 = projectService.configuredProjects.get(tsconfig1.path);
assert(project1.hasOpenRef(), "Has open ref count in project1 - 1"); // file2
assert.isTrue(project1.hasOpenRef(), "Has open ref count in project1 - 1"); // file2
assert.equal(project1.getScriptInfo(file2.path).containingProjects.length, 1, "containing projects count");
assert.isFalse(project1.isClosed());
projectService.openClientFile(file1.path);
checkNumberOfProjects(projectService, { configuredProjects: 2 });
assert(project1.hasOpenRef(), "Has open ref count in project1 - 2"); // file2
assert.equal(projectService.configuredProjects.get(tsconfig1.path), project1);
assert.isTrue(project1.hasOpenRef(), "Has open ref count in project1 - 2"); // file2
assert.strictEqual(projectService.configuredProjects.get(tsconfig1.path), project1);
assert.isFalse(project1.isClosed());
const project2 = projectService.configuredProjects.get(tsconfig2.path);
assert(project2.hasOpenRef(), "Has open ref count in project2 - 2"); // file1
assert.isTrue(project2.hasOpenRef(), "Has open ref count in project2 - 2"); // file1
assert.isFalse(project2.isClosed());
assert.equal(project1.getScriptInfo(file1.path).containingProjects.length, 2, `${file1.path} containing projects count`);
@@ -2196,9 +2214,9 @@ namespace ts.projectSystem {
projectService.closeClientFile(file2.path);
checkNumberOfProjects(projectService, { configuredProjects: 2 });
assert.isFalse(project1.hasOpenRef(), "Has open ref count in project1 - 3"); // No files
assert(project2.hasOpenRef(), "Has open ref count in project2 - 3"); // file1
assert.equal(projectService.configuredProjects.get(tsconfig1.path), project1);
assert.equal(projectService.configuredProjects.get(tsconfig2.path), project2);
assert.isTrue(project2.hasOpenRef(), "Has open ref count in project2 - 3"); // file1
assert.strictEqual(projectService.configuredProjects.get(tsconfig1.path), project1);
assert.strictEqual(projectService.configuredProjects.get(tsconfig2.path), project2);
assert.isFalse(project1.isClosed());
assert.isFalse(project2.isClosed());
@@ -2206,18 +2224,18 @@ namespace ts.projectSystem {
checkNumberOfProjects(projectService, { configuredProjects: 2 });
assert.isFalse(project1.hasOpenRef(), "Has open ref count in project1 - 4"); // No files
assert.isFalse(project2.hasOpenRef(), "Has open ref count in project2 - 4"); // No files
assert.equal(projectService.configuredProjects.get(tsconfig1.path), project1);
assert.equal(projectService.configuredProjects.get(tsconfig2.path), project2);
assert.strictEqual(projectService.configuredProjects.get(tsconfig1.path), project1);
assert.strictEqual(projectService.configuredProjects.get(tsconfig2.path), project2);
assert.isFalse(project1.isClosed());
assert.isFalse(project2.isClosed());
projectService.openClientFile(file2.path);
checkNumberOfProjects(projectService, { configuredProjects: 1 });
assert.equal(projectService.configuredProjects.get(tsconfig1.path), project1);
assert.strictEqual(projectService.configuredProjects.get(tsconfig1.path), project1);
assert.isUndefined(projectService.configuredProjects.get(tsconfig2.path));
assert(project1.hasOpenRef(), "Has open ref count in project1 - 5"); // file2
assert.isTrue(project1.hasOpenRef(), "Has open ref count in project1 - 5"); // file2
assert.isFalse(project1.isClosed());
assert(project2.isClosed());
assert.isTrue(project2.isClosed());
});
it("Open ref of configured project when open file gets added to the project as part of configured file update", () => {
@@ -2255,7 +2273,7 @@ namespace ts.projectSystem {
checkOpenFiles(projectService, files);
checkNumberOfProjects(projectService, { configuredProjects: 1, inferredProjects: 2 });
const configProject1 = projectService.configuredProjects.get(configFile.path);
assert(configProject1.hasOpenRef()); // file1 and file3
assert.isTrue(configProject1.hasOpenRef()); // file1 and file3
checkProjectActualFiles(configProject1, [file1.path, file3.path, configFile.path]);
const inferredProject1 = projectService.inferredProjects[0];
checkProjectActualFiles(inferredProject1, [file2.path]);
@@ -2272,7 +2290,7 @@ namespace ts.projectSystem {
checkNumberOfInferredProjects(projectService, 1);
const inferredProject3 = projectService.inferredProjects[0];
checkProjectActualFiles(inferredProject3, [file4.path]);
assert.equal(inferredProject3, inferredProject2);
assert.strictEqual(inferredProject3, inferredProject2);
projectService.closeClientFile(file1.path);
projectService.closeClientFile(file2.path);
@@ -2298,7 +2316,7 @@ namespace ts.projectSystem {
checkNumberOfInferredProjects(projectService, 1);
const inferredProject5 = projectService.inferredProjects[0];
checkProjectActualFiles(inferredProject4, [file4.path]);
assert.equal(inferredProject5, inferredProject4);
assert.strictEqual(inferredProject5, inferredProject4);
const file5: FileOrFolder = {
path: "/file5.ts",
@@ -2307,13 +2325,13 @@ namespace ts.projectSystem {
host.reloadFS(files.concat(configFile, file5));
projectService.openClientFile(file5.path);
verifyScriptInfosAreUndefined([file1, file2, file3]);
assert.equal(projectService.getScriptInfoForPath(file4.path as Path), find(infos, info => info.path === file4.path));
assert.strictEqual(projectService.getScriptInfoForPath(file4.path as Path), find(infos, info => info.path === file4.path));
assert.isDefined(projectService.getScriptInfoForPath(file5.path as Path));
checkOpenFiles(projectService, [file4, file5]);
checkNumberOfConfiguredProjects(projectService, 0);
function verifyScriptInfos() {
infos.forEach(info => assert.equal(projectService.getScriptInfoForPath(info.path), info));
infos.forEach(info => assert.strictEqual(projectService.getScriptInfoForPath(info.path), info));
}
function verifyScriptInfosAreUndefined(files: FileOrFolder[]) {
@@ -2325,7 +2343,7 @@ namespace ts.projectSystem {
function verifyConfiguredProjectStateAfterUpdate(hasOpenRef: boolean) {
checkNumberOfConfiguredProjects(projectService, 1);
const configProject2 = projectService.configuredProjects.get(configFile.path);
assert.equal(configProject2, configProject1);
assert.strictEqual(configProject2, configProject1);
checkProjectActualFiles(configProject2, [file1.path, file2.path, file3.path, configFile.path]);
assert.equal(configProject2.hasOpenRef(), hasOpenRef);
}
@@ -2364,7 +2382,7 @@ namespace ts.projectSystem {
checkNumberOfProjects(projectService, { configuredProjects: 1, inferredProjects: 1 });
const configuredProject = projectService.configuredProjects.get(configFile.path);
assert(configuredProject.hasOpenRef()); // file1 and file3
assert.isTrue(configuredProject.hasOpenRef()); // file1 and file3
checkProjectActualFiles(configuredProject, [file1.path, file3.path, configFile.path]);
const inferredProject1 = projectService.inferredProjects[0];
checkProjectActualFiles(inferredProject1, [file2.path]);
@@ -2376,23 +2394,23 @@ namespace ts.projectSystem {
configFile.content = "{}";
host.reloadFS(files.concat(configFile));
// Time out is not yet run so there is project update pending
assert(configuredProject.hasOpenRef()); // Pending update and file2 might get into the project
assert.isTrue(configuredProject.hasOpenRef()); // Pending update and file2 might get into the project
projectService.openClientFile(file4.path);
checkNumberOfProjects(projectService, { configuredProjects: 1, inferredProjects: 2 });
assert.equal(projectService.configuredProjects.get(configFile.path), configuredProject);
assert(configuredProject.hasOpenRef()); // Pending update and F2 might get into the project
assert.equal(projectService.inferredProjects[0], inferredProject1);
assert.strictEqual(projectService.configuredProjects.get(configFile.path), configuredProject);
assert.isTrue(configuredProject.hasOpenRef()); // Pending update and F2 might get into the project
assert.strictEqual(projectService.inferredProjects[0], inferredProject1);
const inferredProject2 = projectService.inferredProjects[1];
checkProjectActualFiles(inferredProject2, [file4.path]);
host.runQueuedTimeoutCallbacks();
checkNumberOfProjects(projectService, { configuredProjects: 1, inferredProjects: 1 });
assert.equal(projectService.configuredProjects.get(configFile.path), configuredProject);
assert(configuredProject.hasOpenRef()); // file2
assert.strictEqual(projectService.configuredProjects.get(configFile.path), configuredProject);
assert.isTrue(configuredProject.hasOpenRef()); // file2
checkProjectActualFiles(configuredProject, [file1.path, file2.path, file3.path, configFile.path]);
assert.equal(projectService.inferredProjects[0], inferredProject2);
assert.strictEqual(projectService.inferredProjects[0], inferredProject2);
checkProjectActualFiles(inferredProject2, [file4.path]);
});
@@ -2427,7 +2445,7 @@ namespace ts.projectSystem {
options: {}
});
service.checkNumberOfProjects({ externalProjects: 1 });
assert(service.externalProjects[0].languageServiceEnabled, "language service should be enabled");
assert.isTrue(service.externalProjects[0].languageServiceEnabled, "language service should be enabled");
service.openExternalProject({
projectFileName,
@@ -2464,12 +2482,12 @@ namespace ts.projectSystem {
projectService.openClientFile(f1.path);
projectService.checkNumberOfProjects({ configuredProjects: 1 });
const project = projectService.configuredProjects.get(config.path);
assert(project.hasOpenRef()); // f1
assert.isTrue(project.hasOpenRef()); // f1
assert.isFalse(project.isClosed());
projectService.closeClientFile(f1.path);
projectService.checkNumberOfProjects({ configuredProjects: 1 });
assert.equal(projectService.configuredProjects.get(config.path), project);
assert.strictEqual(projectService.configuredProjects.get(config.path), project);
assert.isFalse(project.hasOpenRef()); // No files
assert.isFalse(project.isClosed());
@@ -2488,7 +2506,7 @@ namespace ts.projectSystem {
projectService.openClientFile(f4.path);
projectService.checkNumberOfProjects({ inferredProjects: 1 });
assert.isFalse(project.hasOpenRef()); // No files
assert(project.isClosed());
assert.isTrue(project.isClosed());
for (const f of [f1, f2, f3]) {
// All the script infos should not be present since the project is closed and orphan script infos are collected
@@ -2540,7 +2558,7 @@ namespace ts.projectSystem {
checkNumberOfProjects(projectService, { configuredProjects: 1 });
const project = configuredProjectAt(projectService, 0);
assert.isFalse(project.languageServiceEnabled, "Language service enabled");
assert(!!lastEvent, "should receive event");
assert.isTrue(!!lastEvent, "should receive event");
assert.equal(lastEvent.data.project, project, "project name");
assert.equal(lastEvent.data.project.getProjectName(), config.path, "config path");
assert.isFalse(lastEvent.data.languageServiceEnabled, "Language service state");
@@ -2548,9 +2566,9 @@ namespace ts.projectSystem {
host.reloadFS([f1, f2, configWithExclude]);
host.checkTimeoutQueueLengthAndRun(2);
checkNumberOfProjects(projectService, { configuredProjects: 1 });
assert(project.languageServiceEnabled, "Language service enabled");
assert.isTrue(project.languageServiceEnabled, "Language service enabled");
assert.equal(lastEvent.data.project, project, "project");
assert(lastEvent.data.languageServiceEnabled, "Language service state");
assert.isTrue(lastEvent.data.languageServiceEnabled, "Language service state");
});
it("syntactic features work even if language service is disabled", () => {
@@ -2592,7 +2610,7 @@ namespace ts.projectSystem {
checkNumberOfProjects(projectService, { configuredProjects: 1 });
const project = configuredProjectAt(projectService, 0);
assert.isFalse(project.languageServiceEnabled, "Language service enabled");
assert(!!lastEvent, "should receive event");
assert.isTrue(!!lastEvent, "should receive event");
assert.equal(lastEvent.data.project, project, "project name");
assert.isFalse(lastEvent.data.languageServiceEnabled, "Language service state");
@@ -2747,7 +2765,7 @@ namespace ts.projectSystem {
host.runQueuedTimeoutCallbacks();
watchedRecursiveDirectories.pop();
checkNumberOfProjects(projectService, { configuredProjects: 1 });
assert.equal(projectService.configuredProjects.get(configFile.path), project);
assert.strictEqual(projectService.configuredProjects.get(configFile.path), project);
checkProjectActualFiles(project, mapDefined(files, file => file === file2a ? undefined : file.path));
checkWatchedFiles(host, mapDefined(files, file => file === file1 ? undefined : file.path));
checkWatchedDirectories(host, [], /*recursive*/ false);
@@ -2756,7 +2774,7 @@ namespace ts.projectSystem {
// On next file open the files file2a should be closed and not watched any more
projectService.openClientFile(file2.path);
checkNumberOfProjects(projectService, { configuredProjects: 1 });
assert.equal(projectService.configuredProjects.get(configFile.path), project);
assert.strictEqual(projectService.configuredProjects.get(configFile.path), project);
checkProjectActualFiles(project, mapDefined(files, file => file === file2a ? undefined : file.path));
checkWatchedFiles(host, [libFile.path, configFile.path]);
checkWatchedDirectories(host, [], /*recursive*/ false);
@@ -2979,7 +2997,7 @@ namespace ts.projectSystem {
});
projectService.checkNumberOfProjects({ externalProjects: 1 });
const typeAcquisition = projectService.externalProjects[0].getTypeAcquisition();
assert(typeAcquisition.enable, "Typine acquisition should be enabled");
assert.isTrue(typeAcquisition.enable, "Typine acquisition should be enabled");
});
});
@@ -3050,7 +3068,7 @@ namespace ts.projectSystem {
const localFunctionNavToRequst = makeSessionRequest<protocol.NavtoRequestArgs>(CommandNames.Navto, { searchValue: "foo", file: file1.path, projectFileName: configFile.path });
const items2 = session.executeCommand(localFunctionNavToRequst).response as protocol.NavtoItem[];
assert(containsNavToItem(items2, "foo", "function"), `Cannot find function symbol "foo".`);
assert.isTrue(containsNavToItem(items2, "foo", "function"), `Cannot find function symbol "foo".`);
});
});
@@ -3264,18 +3282,18 @@ namespace ts.projectSystem {
projectService.openClientFile(f.path);
projectService.checkNumberOfProjects({ configuredProjects: 1 });
const project = projectService.configuredProjects.get(config.path);
assert(project.hasOpenRef()); // f
assert.isTrue(project.hasOpenRef()); // f
projectService.closeClientFile(f.path);
projectService.checkNumberOfProjects({ configuredProjects: 1 });
assert.equal(projectService.configuredProjects.get(config.path), project);
assert.strictEqual(projectService.configuredProjects.get(config.path), project);
assert.isFalse(project.hasOpenRef()); // No files
assert.isFalse(project.isClosed());
projectService.openClientFile(f.path);
projectService.checkNumberOfProjects({ configuredProjects: 1 });
assert.equal(projectService.configuredProjects.get(config.path), project);
assert(project.hasOpenRef()); // f
assert.strictEqual(projectService.configuredProjects.get(config.path), project);
assert.isTrue(project.hasOpenRef()); // f
assert.isFalse(project.isClosed());
});
});
@@ -3872,16 +3890,16 @@ namespace ts.projectSystem {
{ file: file2.path }
);
let errorResult = <protocol.Diagnostic[]>session.executeCommand(file2GetErrRequest).response;
assert(errorResult.length === 0);
assert.isTrue(errorResult.length === 0);
const closeFileRequest = makeSessionRequest<protocol.FileRequestArgs>(CommandNames.Close, { file: file1.path });
session.executeCommand(closeFileRequest);
errorResult = <protocol.Diagnostic[]>session.executeCommand(file2GetErrRequest).response;
assert(errorResult.length !== 0);
assert.isTrue(errorResult.length !== 0);
openFilesForSession([file1], session);
errorResult = <protocol.Diagnostic[]>session.executeCommand(file2GetErrRequest).response;
assert(errorResult.length === 0);
assert.isTrue(errorResult.length === 0);
});
it("should be turned on for js-only external projects", () => {
@@ -3917,7 +3935,7 @@ namespace ts.projectSystem {
{ file: dTsFile.path }
);
const errorResult = <protocol.Diagnostic[]>session.executeCommand(dTsFileGetErrRequest).response;
assert(errorResult.length === 0);
assert.isTrue(errorResult.length === 0);
});
it("should be turned on for js-only external projects with skipLibCheck=false", () => {
@@ -3953,7 +3971,7 @@ namespace ts.projectSystem {
{ file: dTsFile.path }
);
const errorResult = <protocol.Diagnostic[]>session.executeCommand(dTsFileGetErrRequest).response;
assert(errorResult.length === 0);
assert.isTrue(errorResult.length === 0);
});
it("should not report bind errors for declaration files with skipLibCheck=true", () => {
@@ -3984,14 +4002,14 @@ namespace ts.projectSystem {
{ file: dTsFile1.path }
);
const error1Result = <protocol.Diagnostic[]>session.executeCommand(dTsFile1GetErrRequest).response;
assert(error1Result.length === 0);
assert.isTrue(error1Result.length === 0);
const dTsFile2GetErrRequest = makeSessionRequest<protocol.SemanticDiagnosticsSyncRequestArgs>(
CommandNames.SemanticDiagnosticsSync,
{ file: dTsFile2.path }
);
const error2Result = <protocol.Diagnostic[]>session.executeCommand(dTsFile2GetErrRequest).response;
assert(error2Result.length === 0);
assert.isTrue(error2Result.length === 0);
});
it("should report semanitc errors for loose JS files with '// @ts-check' and skipLibCheck=true", () => {
@@ -4012,7 +4030,7 @@ namespace ts.projectSystem {
{ file: jsFile.path }
);
const errorResult = <protocol.Diagnostic[]>session.executeCommand(getErrRequest).response;
assert(errorResult.length === 1);
assert.isTrue(errorResult.length === 1);
assert.equal(errorResult[0].code, Diagnostics.Operator_0_cannot_be_applied_to_types_1_and_2.code);
});
@@ -4039,7 +4057,7 @@ namespace ts.projectSystem {
{ file: jsFile.path }
);
const errorResult = <protocol.Diagnostic[]>session.executeCommand(getErrRequest).response;
assert(errorResult.length === 1);
assert.isTrue(errorResult.length === 1);
assert.equal(errorResult[0].code, Diagnostics.Operator_0_cannot_be_applied_to_types_1_and_2.code);
});
@@ -4068,7 +4086,7 @@ namespace ts.projectSystem {
{ file: jsFile.path }
);
const errorResult = <protocol.Diagnostic[]>session.executeCommand(getErrRequest).response;
assert(errorResult.length === 1);
assert.isTrue(errorResult.length === 1);
assert.equal(errorResult[0].code, Diagnostics.Operator_0_cannot_be_applied_to_types_1_and_2.code);
});
});
@@ -4096,7 +4114,7 @@ namespace ts.projectSystem {
checkNumberOfInferredProjects(projectService, 1);
const inferredProject = projectService.inferredProjects[0];
assert(inferredProject.containsFile(<server.NormalizedPath>file1.path));
assert.isTrue(inferredProject.containsFile(<server.NormalizedPath>file1.path));
});
it("should be able to handle @types if input file list is empty", () => {
@@ -4236,7 +4254,7 @@ namespace ts.projectSystem {
arguments: { file: f1.path }
});
checkScriptInfoAndProjects(0, f1.content, "contents of closed file");
assert.equal(info.getSnapshot(), snap);
assert.strictEqual(info.getSnapshot(), snap);
// reload from temp file
session.executeCommandSeq(<server.protocol.ReloadRequest>{
@@ -4244,7 +4262,7 @@ namespace ts.projectSystem {
arguments: { file: f1.path, tmpfile: tmp.path }
});
checkScriptInfoAndProjects(0, tmp.content, "contents of temp file");
assert.notEqual(info.getSnapshot(), snap);
assert.notStrictEqual(info.getSnapshot(), snap);
// reload from own file
session.executeCommandSeq(<server.protocol.ReloadRequest>{
@@ -4252,11 +4270,11 @@ namespace ts.projectSystem {
arguments: { file: f1.path }
});
checkScriptInfoAndProjects(0, f1.content, "contents of closed file");
assert.notEqual(info.getSnapshot(), snap);
assert.notStrictEqual(info.getSnapshot(), snap);
function checkScriptInfoAndProjects(inferredProjects: number, contentsOfInfo: string, captionForContents: string) {
checkNumberOfProjects(projectService, { inferredProjects });
assert.equal(projectService.getScriptInfo(f1.path), info);
assert.strictEqual(projectService.getScriptInfo(f1.path), info);
checkScriptInfoContents(contentsOfInfo, captionForContents);
}
@@ -4515,7 +4533,7 @@ namespace ts.projectSystem {
seq: 2,
arguments: { projectFileName: projectName }
}).response as ReadonlyArray<protocol.DiagnosticWithLinePosition>;
assert(diags.length === 0);
assert.isTrue(diags.length === 0);
session.executeCommand(<server.protocol.SetCompilerOptionsForInferredProjectsRequest>{
type: "request",
@@ -4529,7 +4547,7 @@ namespace ts.projectSystem {
seq: 4,
arguments: { projectFileName: projectName }
}).response as ReadonlyArray<protocol.DiagnosticWithLinePosition>;
assert(diagsAfterUpdate.length === 0);
assert.isTrue(diagsAfterUpdate.length === 0);
});
it("for external project", () => {
@@ -4556,7 +4574,7 @@ namespace ts.projectSystem {
seq: 2,
arguments: { projectFileName }
}).response as ReadonlyArray<ts.server.protocol.DiagnosticWithLinePosition>;
assert(diags.length === 0);
assert.isTrue(diags.length === 0);
session.executeCommand(<server.protocol.OpenExternalProjectRequest>{
type: "request",
@@ -4574,7 +4592,7 @@ namespace ts.projectSystem {
seq: 4,
arguments: { projectFileName }
}).response as ReadonlyArray<ts.server.protocol.DiagnosticWithLinePosition>;
assert(diagsAfterUpdate.length === 0);
assert.isTrue(diagsAfterUpdate.length === 0);
});
});
@@ -4758,7 +4776,7 @@ namespace ts.projectSystem {
isCancellationRequested: () => false,
setRequest: requestId => {
if (expectedRequestId === undefined) {
assert(false, "unexpected call");
assert.isTrue(false, "unexpected call");
}
assert.equal(requestId, expectedRequestId);
},
@@ -5017,7 +5035,7 @@ namespace ts.projectSystem {
);
const highlightResponse = session.executeCommand(highlightRequest).response as protocol.OccurrencesResponseItem[];
const firstOccurence = highlightResponse[0];
assert(firstOccurence.isInString, "Highlights should be marked with isInString");
assert.isTrue(firstOccurence.isInString, "Highlights should be marked with isInString");
}
{
@@ -5026,7 +5044,7 @@ namespace ts.projectSystem {
{ file: file1.path, line: 3, offset: 13 }
);
const highlightResponse = session.executeCommand(highlightRequest).response as protocol.OccurrencesResponseItem[];
assert(highlightResponse.length === 2);
assert.isTrue(highlightResponse.length === 2);
const firstOccurence = highlightResponse[0];
assert.isUndefined(firstOccurence.isInString, "Highlights should not be marked with isInString if on property name");
}
@@ -5037,7 +5055,7 @@ namespace ts.projectSystem {
{ file: file1.path, line: 4, offset: 14 }
);
const highlightResponse = session.executeCommand(highlightRequest).response as protocol.OccurrencesResponseItem[];
assert(highlightResponse.length === 2);
assert.isTrue(highlightResponse.length === 2);
const firstOccurence = highlightResponse[0];
assert.isUndefined(firstOccurence.isInString, "Highlights should not be marked with isInString if on indexer");
}
@@ -5061,13 +5079,13 @@ namespace ts.projectSystem {
let project = projectService.inferredProjects[0];
let options = project.getCompilationSettings();
assert(options.maxNodeModuleJsDepth === 2);
assert.isTrue(options.maxNodeModuleJsDepth === 2);
// Assert the option sticks
projectService.setCompilerOptionsForInferredProjects({ target: ScriptTarget.ES2016 });
project = projectService.inferredProjects[0];
options = project.getCompilationSettings();
assert(options.maxNodeModuleJsDepth === 2);
assert.isTrue(options.maxNodeModuleJsDepth === 2);
});
it("should return to normal state when all js root files are removed from project", () => {
@@ -5090,7 +5108,7 @@ namespace ts.projectSystem {
projectService.openClientFile(file2.path);
project = projectService.inferredProjects[0];
assert(project.getCompilationSettings().maxNodeModuleJsDepth === 2);
assert.isTrue(project.getCompilationSettings().maxNodeModuleJsDepth === 2);
projectService.closeClientFile(file2.path);
project = projectService.inferredProjects[0];
@@ -5134,7 +5152,7 @@ namespace ts.projectSystem {
seq: 2,
arguments: { file: configFile.path, projectFileName: projectName, includeLinePosition: true }
}).response as ReadonlyArray<server.protocol.DiagnosticWithLinePosition>;
assert(diags.length === 2);
assert.isTrue(diags.length === 2);
configFile.content = configFileContentWithoutCommentLine;
host.reloadFS([file, configFile]);
@@ -5145,7 +5163,7 @@ namespace ts.projectSystem {
seq: 2,
arguments: { file: configFile.path, projectFileName: projectName, includeLinePosition: true }
}).response as ReadonlyArray<server.protocol.DiagnosticWithLinePosition>;
assert(diagsAfterEdit.length === 2);
assert.isTrue(diagsAfterEdit.length === 2);
verifyDiagnostic(diags[0], diagsAfterEdit[0]);
verifyDiagnostic(diags[1], diagsAfterEdit[1]);
@@ -5271,7 +5289,7 @@ namespace ts.projectSystem {
function verifyCalledOn(callback: CalledMaps, name: string) {
const calledMap = calledMaps[callback];
const result = calledMap.get(name);
assert(result && !!result.length, `${callback} should be called with name: ${name}: ${arrayFrom(calledMap.keys())}`);
assert.isTrue(result && !!result.length, `${callback} should be called with name: ${name}: ${arrayFrom(calledMap.keys())}`);
}
function verifyNoCall(callback: CalledMaps) {
@@ -5283,7 +5301,7 @@ namespace ts.projectSystem {
const calledMap = calledMaps[callback];
ts.TestFSWithWatch.verifyMapSize(callback, calledMap, arrayFrom(expectedKeys.keys()));
expectedKeys.forEach((called, name) => {
assert(calledMap.has(name), `${callback} is expected to contain ${name}, actual keys: ${arrayFrom(calledMap.keys())}`);
assert.isTrue(calledMap.has(name), `${callback} is expected to contain ${name}, actual keys: ${arrayFrom(calledMap.keys())}`);
assert.equal(calledMap.get(name).length, called, `${callback} is expected to be called ${called} times with ${name}. Actual entry: ${calledMap.get(name)}`);
});
}
@@ -5356,10 +5374,10 @@ namespace ts.projectSystem {
try {
// trigger synchronization to make sure that LSHost will try to find 'f2' module on disk
verifyImportedDiagnostics();
assert(false, `should not find file '${imported.path}'`);
assert.isTrue(false, `should not find file '${imported.path}'`);
}
catch (e) {
assert(e.message.indexOf(`Could not find file: '${imported.path}'.`) === 0);
assert.isTrue(e.message.indexOf(`Could not find file: '${imported.path}'.`) === 0);
}
const f2Lookups = getLocationsForModuleLookup("f2");
callsTrackingHost.verifyCalledOnEachEntryNTimes(CalledMapsWithSingleArg.fileExists, f2Lookups, 1);
@@ -5544,7 +5562,7 @@ namespace ts.projectSystem {
callsTrackingHost.verifyNoHostCallsExceptFileExistsOnce(["/a/b/models/tsconfig.json", "/a/b/models/jsconfig.json"]);
checkNumberOfConfiguredProjects(projectService, 1);
assert.equal(projectService.configuredProjects.get(tsconfigFile.path), project);
assert.strictEqual(projectService.configuredProjects.get(tsconfigFile.path), project);
});
describe("WatchDirectories for config file with", () => {
@@ -5631,7 +5649,7 @@ namespace ts.projectSystem {
callsTrackingHost.verifyNoCall(CalledMapsWithFiveArgs.readDirectory);
checkNumberOfConfiguredProjects(projectService, 1);
assert.equal(projectService.configuredProjects.get(canonicalConfigPath), project);
assert.strictEqual(projectService.configuredProjects.get(canonicalConfigPath), project);
verifyProjectAndWatchedDirectories();
callsTrackingHost.clear();
@@ -5640,7 +5658,7 @@ namespace ts.projectSystem {
assert.equal(configFile2, configFileName);
checkNumberOfConfiguredProjects(projectService, 1);
assert.equal(projectService.configuredProjects.get(canonicalConfigPath), project);
assert.strictEqual(projectService.configuredProjects.get(canonicalConfigPath), project);
verifyProjectAndWatchedDirectories();
callsTrackingHost.verifyNoHostCalls();
@@ -5842,7 +5860,7 @@ namespace ts.projectSystem {
forEach(actual, f => {
assert.isFalse(seen.has(f), `${caption}: Found duplicate ${f}. Actual: ${actual} Expected: ${expected}`);
seen.set(f, true);
assert(contains(expected, f), `${caption}: Expected not to contain ${f}. Actual: ${actual} Expected: ${expected}`);
assert.isTrue(contains(expected, f), `${caption}: Expected not to contain ${f}. Actual: ${actual} Expected: ${expected}`);
});
}
@@ -6313,7 +6331,7 @@ namespace ts.projectSystem {
else {
// file2 addition wont be detected
projectFiles.pop();
assert(host.fileExists(file2.path));
assert.isTrue(host.fileExists(file2.path));
}
verifyProject();
@@ -6380,7 +6398,7 @@ namespace ts.projectSystem {
assert.equal(projectChangedEvents.length, expectedEvents.length, `Incorrect number of events Actual: ${eventsToString(projectChangedEvents)} Expected: ${eventsToString(expectedEvents)}`);
forEach(projectChangedEvents, (actualEvent, i) => {
const expectedEvent = expectedEvents[i];
assert.equal(actualEvent.eventName, expectedEvent.eventName);
assert.strictEqual(actualEvent.eventName, expectedEvent.eventName);
verifyFiles("openFiles", actualEvent.data.openFiles, expectedEvent.data.openFiles);
});
+15 -15
View File
@@ -323,7 +323,7 @@ namespace ts.projectSystem {
typeAcquisition: { enable: true, include: ["jquery"] }
});
assert(enqueueIsCalled, "expected enqueueIsCalled to be true");
assert.isTrue(enqueueIsCalled, "expected enqueueIsCalled to be true");
installer.installAll(/*expectedCount*/ 1);
// auto is set in type acquisition - use it even if project contains only .ts files
@@ -629,7 +629,7 @@ namespace ts.projectSystem {
installer.executePendingCommands();
// expected all typings file to exist
for (const f of typingFiles) {
assert(host.fileExists(f.path), `expected file ${f.path} to exist`);
assert.isTrue(host.fileExists(f.path), `expected file ${f.path} to exist`);
}
host.checkTimeoutQueueLengthAndRun(2);
checkNumberOfProjects(projectService, { externalProjects: 1 });
@@ -965,8 +965,8 @@ namespace ts.projectSystem {
installer.installAll(/*expectedCount*/1);
assert(host.fileExists(node.path), "typings for 'node' should be created");
assert(host.fileExists(commander.path), "typings for 'commander' should be created");
assert.isTrue(host.fileExists(node.path), "typings for 'node' should be created");
assert.isTrue(host.fileExists(commander.path), "typings for 'commander' should be created");
checkProjectActualFiles(service.inferredProjects[0], [file.path, node.path, commander.path]);
});
@@ -1009,7 +1009,7 @@ namespace ts.projectSystem {
installer.installAll(/*expectedCount*/ 1);
});
it("cached unresolved typings are not recomputed if program structure did not change", () => {
it("should recompute resolutions after typings are installed", () => {
const host = createServerHost([]);
const session = createSession(host);
const f = {
@@ -1051,7 +1051,7 @@ namespace ts.projectSystem {
session.executeCommand(changeRequest);
host.checkTimeoutQueueLengthAndRun(2); // This enqueues the updategraph and refresh inferred projects
const version2 = proj.getCachedUnresolvedImportsPerFile_TestOnly().getVersion();
assert.equal(version1, version2, "set of unresolved imports should not change");
assert.notEqual(version1, version2, "set of unresolved imports should change");
});
});
@@ -1107,7 +1107,7 @@ namespace ts.projectSystem {
projectService.openClientFile(f1.path);
installer.checkPendingCommands(/*expectedCount*/ 0);
assert(messages.indexOf("Package name '; say Hello from TypeScript! #' contains non URI safe characters") > 0, "should find package with invalid name");
assert.isTrue(messages.indexOf("Package name '; say Hello from TypeScript! #' contains non URI safe characters") > 0, "should find package with invalid name");
});
});
@@ -1256,7 +1256,7 @@ namespace ts.projectSystem {
installer.installAll(/*expectedCount*/ 1);
assert(seenTelemetryEvent);
assert.isTrue(seenTelemetryEvent);
host.checkTimeoutQueueLengthAndRun(2);
checkNumberOfProjects(projectService, { inferredProjects: 1 });
checkProjectActualFiles(projectService.inferredProjects[0], [f1.path, commander.path]);
@@ -1307,10 +1307,10 @@ namespace ts.projectSystem {
installer.installAll(/*expectedCount*/ 1);
assert(!!beginEvent);
assert(!!endEvent);
assert(beginEvent.eventId === endEvent.eventId);
assert(endEvent.installSuccess);
assert.isTrue(!!beginEvent);
assert.isTrue(!!endEvent);
assert.isTrue(beginEvent.eventId === endEvent.eventId);
assert.isTrue(endEvent.installSuccess);
host.checkTimeoutQueueLengthAndRun(2);
checkNumberOfProjects(projectService, { inferredProjects: 1 });
checkProjectActualFiles(projectService.inferredProjects[0], [f1.path, commander.path]);
@@ -1353,9 +1353,9 @@ namespace ts.projectSystem {
installer.installAll(/*expectedCount*/ 1);
assert(!!beginEvent);
assert(!!endEvent);
assert(beginEvent.eventId === endEvent.eventId);
assert.isTrue(!!beginEvent);
assert.isTrue(!!endEvent);
assert.isTrue(beginEvent.eventId === endEvent.eventId);
assert.isFalse(endEvent.installSuccess);
checkNumberOfProjects(projectService, { inferredProjects: 1 });
checkProjectActualFiles(projectService.inferredProjects[0], [f1.path]);
+4 -4
View File
@@ -34,7 +34,7 @@ var p:Point=new Point();
var q:Point=<Point>p;`;
const { lines } = server.LineIndex.linesFromText(testContent);
assert(lines.length > 0, "Failed to initialize test text. Expected text to have at least one line");
assert.isTrue(lines.length > 0, "Failed to initialize test text. Expected text to have at least one line");
const lineIndex = new server.LineIndex();
lineIndex.load(lines);
@@ -94,7 +94,7 @@ that was purple at the tips
and grew 1cm per day`;
({ lines, lineMap } = server.LineIndex.linesFromText(testContent));
assert(lines.length > 0, "Failed to initialize test text. Expected text to have at least one line");
assert.isTrue(lines.length > 0, "Failed to initialize test text. Expected text to have at least one line");
const lineIndex = new server.LineIndex();
lineIndex.load(lines);
@@ -203,10 +203,10 @@ and grew 1cm per day`;
const testFileName = "src/compiler/scanner.ts";
testContent = Harness.IO.readFile(testFileName);
const totalChars = testContent.length;
assert(totalChars > 0, "Failed to read test file.");
assert.isTrue(totalChars > 0, "Failed to read test file.");
({ lines, lineMap } = server.LineIndex.linesFromText(testContent));
assert(lines.length > 0, "Failed to initialize test text. Expected text to have at least one line");
assert.isTrue(lines.length > 0, "Failed to initialize test text. Expected text to have at least one line");
lineIndex = new server.LineIndex();
lineIndex.load(lines);
+1 -1
View File
@@ -162,7 +162,7 @@ namespace Utils {
/**
* Reads the directory at the given path and retrieves a list of file names and a list
* of directory names within it. Suitable for use with ts.matchFiles()
* @param path The path to the directory to be read
* @param path The path to the directory to be read
*/
getAccessibleFileSystemEntries(path: string) {
const entry = this.traversePath(path);
+1 -1
View File
@@ -139,7 +139,7 @@ interface Array<T> {}`
function checkMapKeys(caption: string, map: Map<any>, expectedKeys: ReadonlyArray<string>) {
verifyMapSize(caption, map, expectedKeys);
for (const name of expectedKeys) {
assert(map.has(name), `${caption} is expected to contain ${name}, actual keys: ${arrayFrom(map.keys())}`);
assert.isTrue(map.has(name), `${caption} is expected to contain ${name}, actual keys: ${arrayFrom(map.keys())}`);
}
}
+15 -6
View File
@@ -3596,8 +3596,8 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec
slot: string;
readonly shadowRoot: ShadowRoot | null;
getAttribute(name: string): string | null;
getAttributeNode(name: string): Attr;
getAttributeNodeNS(namespaceURI: string, localName: string): Attr;
getAttributeNode(name: string): Attr | null;
getAttributeNodeNS(namespaceURI: string, localName: string): Attr | null;
getAttributeNS(namespaceURI: string, localName: string): string;
getBoundingClientRect(): ClientRect;
getClientRects(): ClientRectList;
@@ -3757,9 +3757,10 @@ declare var External: {
};
interface File extends Blob {
readonly lastModifiedDate: any;
readonly lastModifiedDate: Date;
readonly name: string;
readonly webkitRelativePath: string;
readonly lastModified: number;
}
declare var File: {
@@ -5200,6 +5201,10 @@ interface HTMLIFrameElement extends HTMLElement, GetSVGDocument {
* Sets or retrieves the width of the object.
*/
width: string;
/**
* Sets or retrives the content of the page that is to contain.
*/
srcdoc: string;
addEventListener<K extends keyof HTMLIFrameElementEventMap>(type: K, listener: (this: HTMLIFrameElement, ev: HTMLIFrameElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
removeEventListener<K extends keyof HTMLIFrameElementEventMap>(type: K, listener: (this: HTMLIFrameElement, ev: HTMLIFrameElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
@@ -5495,8 +5500,9 @@ interface HTMLInputElement extends HTMLElement {
* Sets the start and end positions of a selection in a text field.
* @param start The offset into the text field for the start of the selection.
* @param end The offset into the text field for the end of the selection.
* @param direction The direction in which the selection is performed.
*/
setSelectionRange(start?: number, end?: number, direction?: string): void;
setSelectionRange(start: number, end: number, direction?: "forward" | "backward" | "none"): void;
/**
* Decrements a range input control's value by the value given by the Step attribute. If the optional parameter is used, it will decrement the input control's step value multiplied by the parameter's value.
* @param n Value to decrement the value by.
@@ -6057,6 +6063,7 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument {
* Returns whether an element will successfully validate based on forms validation rules and constraints.
*/
readonly willValidate: boolean;
typemustmatch: boolean;
/**
* Returns whether a form will validate when it is submitted, without having to submit it.
*/
@@ -6958,8 +6965,9 @@ interface HTMLTextAreaElement extends HTMLElement {
* Sets the start and end positions of a selection in a text field.
* @param start The offset into the text field for the start of the selection.
* @param end The offset into the text field for the end of the selection.
* @param direction The direction in which the selection is performed.
*/
setSelectionRange(start: number, end: number): void;
setSelectionRange(start: number, end: number, direction?: "forward" | "backward" | "none"): void;
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTextAreaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTextAreaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
@@ -12213,7 +12221,7 @@ interface URL {
declare var URL: {
prototype: URL;
new(url: string, base?: string): URL;
new(url: string, base?: string | URL): URL;
createObjectURL(object: any, options?: ObjectURLOptions): string;
revokeObjectURL(url: string): void;
};
@@ -15029,6 +15037,7 @@ interface SVGElementTagNameMap {
"view": SVGViewElement;
}
/** @deprecated Directly use HTMLElementTagNameMap or SVGElementTagNameMap as appropriate, instead. */
interface ElementTagNameMap extends HTMLElementTagNameMap, SVGElementTagNameMap { }
declare var Audio: { new(src?: string): HTMLAudioElement; };
-1
View File
@@ -992,7 +992,6 @@ interface ReadonlyArray<T> {
* Combines two or more arrays.
* @param items Additional items to add to the end of array1.
*/
// TODO: https://github.com/Microsoft/TypeScript/issues/20454
concat(...items: (T[] | ReadonlyArray<T>)[]): T[];
/**
* Combines two or more arrays.
+2 -1
View File
@@ -1,2 +1,3 @@
/// <reference path="lib.es2017.d.ts" />
/// <reference path="lib.es2018.d.ts" />
/// <reference path="lib.esnext.asynciterable.d.ts" />
/// <reference path="lib.esnext.promise.d.ts" />
+12
View File
@@ -0,0 +1,12 @@
/**
* Represents the completion of an asynchronous operation
*/
interface Promise<T> {
/**
* Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
* resolved value cannot be modified from the callback.
* @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
* @returns A Promise for the completion of the callback.
*/
finally(onfinally?: (() => void) | undefined | null): Promise<T>
}
+3 -2
View File
@@ -414,9 +414,10 @@ declare var EventTarget: {
};
interface File extends Blob {
readonly lastModifiedDate: any;
readonly lastModifiedDate: Date;
readonly name: string;
readonly webkitRelativePath: string;
readonly lastModified: number;
}
declare var File: {
@@ -1061,7 +1062,7 @@ interface URL {
declare var URL: {
prototype: URL;
new(url: string, base?: string): URL;
new(url: string, base?: string | URL): URL;
createObjectURL(object: any, options?: ObjectURLOptions): string;
revokeObjectURL(url: string): void;
};
@@ -154,7 +154,7 @@
<Str Cat="Text">
<Val><![CDATA[A computed property name in a method overload must refer to an expression whose type is a literal type or a 'unique symbol' type.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[方法重载中的计算属性名称必须引用类型为文本类型或 "unique symbol" 类型的表达式。]]></Val>
<Val><![CDATA[方法重载中的计算属性名称必须引用文本类型或 "unique symbol" 类型的表达式。]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -867,8 +867,8 @@
<Item ItemId=";Add_0_to_existing_import_declaration_from_1_90015" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add '{0}' to existing import declaration from "{1}"]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[将 {0}{1} 添加到现有导入声明]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[将{0}”从“{1}添加到现有导入声明]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add '{0}' to existing import declaration from "{1}".]]></Val>
@@ -879,8 +879,8 @@
<Item ItemId=";Add_index_signature_for_property_0_90017" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add index signature for property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[为属性“{0}”添加索引签名]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[为属性“{0}”添加索引签名]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add index signature for property '{0}'.]]></Val>
@@ -891,8 +891,8 @@
<Item ItemId=";Add_missing_super_call_90001" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add missing 'super()' call]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[添加缺失的 "super()" 调用]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[添加缺失的 "super()" 调用]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add missing 'super()' call.]]></Val>
@@ -903,8 +903,8 @@
<Item ItemId=";Add_this_to_unresolved_variable_90008" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add 'this.' to unresolved variable]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[向未解析的变量添加 "this."]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[向未解析的变量添加 "this."]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add 'this.' to unresolved variable.]]></Val>
@@ -915,6 +915,9 @@
<Item ItemId=";Adding_a_tsconfig_json_file_will_help_organize_projects_that_contain_both_TypeScript_and_JavaScript__5068" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Adding a tsconfig.json file will help organize projects that contain both TypeScript and JavaScript files. Learn more at https://aka.ms/tsconfig.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[添加 tsconfig.json 文件有助于组织包含 TypeScript 和 JavaScript 文件的项目。有关详细信息,请访问 https://aka.ms/tsconfig。]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -1381,7 +1384,7 @@
<Str Cat="Text">
<Val><![CDATA[Annotate with type from JSDoc]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[使用 JSDoc 中的类型批注]]></Val>
<Val><![CDATA[通过 JSDoc 类型批注]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -1545,8 +1548,8 @@
<Item ItemId=";Call_decorator_expression_90028" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Call decorator expression]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[调用修饰器表达式]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[调用修饰器表达式]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Call decorator expression.]]></Val>
@@ -1962,8 +1965,8 @@
<Item ItemId=";Change_0_to_1_90014" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Change '{0}' to '{1}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[将“{0}”更改为“{1}”]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[将“{0}”更改为“{1}”]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Change '{0}' to '{1}'.]]></Val>
@@ -1986,8 +1989,8 @@
<Item ItemId=";Change_spelling_to_0_90022" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Change spelling to '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[将拼写更改为“{0}”]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[将拼写更改为“{0}”]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Change spelling to '{0}'.]]></Val>
@@ -2067,6 +2070,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclas_2720" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Class '{0}' incorrectly implements class '{1}'. Did you mean to extend '{1}' and inherit its members as a subclass?]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[类“{0}”错误实现类“{1}”。你是想扩展“{1}”并将其成员作为子类继承吗?]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Class_0_incorrectly_implements_interface_1_2420" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Class '{0}' incorrectly implements interface '{1}'.]]></Val>
@@ -2364,8 +2376,8 @@
<Item ItemId=";Declare_method_0_90023" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare method '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[声明方法“{0}”]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[声明方法“{0}”]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare method '{0}'.]]></Val>
@@ -2376,8 +2388,8 @@
<Item ItemId=";Declare_property_0_90016" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[声明属性“{0}”]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[声明属性“{0}”]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare property '{0}'.]]></Val>
@@ -2388,8 +2400,8 @@
<Item ItemId=";Declare_static_method_0_90024" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare static method '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[声明静态方法“{0}”]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[声明静态方法“{0}”]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare static method '{0}'.]]></Val>
@@ -2400,8 +2412,8 @@
<Item ItemId=";Declare_static_property_0_90027" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare static property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[声明静态属性 "{0}"。]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[声明静态属性{0}]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare static property '{0}'.]]></Val>
@@ -2484,8 +2496,8 @@
<Item ItemId=";Disable_checking_for_this_file_90018" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Disable checking for this file]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[禁用检查此文件]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[禁用检查此文件]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Disable checking for this file.]]></Val>
@@ -3453,15 +3465,6 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";File_specification_cannot_contain_multiple_recursive_directory_wildcards_Asterisk_Asterisk_Colon_0_5011" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[File specification cannot contain multiple recursive directory wildcards ('**'): '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[文件规范不能包含多个递归目录通配符("**"):“{0}”。]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";File_specification_cannot_end_in_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0_5010" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[File specification cannot end in a recursive directory wildcard ('**'): '{0}'.]]></Val>
@@ -3756,8 +3759,8 @@
<Item ItemId=";Ignore_this_error_message_90019" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Ignore this error message]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[忽略此错误信息]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[忽略此错误信息]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Ignore this error message.]]></Val>
@@ -3780,8 +3783,8 @@
<Item ItemId=";Implement_interface_0_90006" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Implement interface '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[实现接口“{0}”]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[实现接口“{0}”]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Implement interface '{0}'.]]></Val>
@@ -3801,8 +3804,8 @@
<Item ItemId=";Import_0_from_module_1_90013" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Import '{0}' from module "{1}"]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[从模块“{1}”导入“{0}”]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[从模块“{1}”导入“{0}”]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Import '{0}' from module "{1}".]]></Val>
@@ -3954,8 +3957,8 @@
<Item ItemId=";Infer_parameter_types_from_usage_95012" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Infer parameter types from usage]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[从用法中推断参数类型]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[根据使用情况推断参数类型]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Infer parameter types from usage.]]></Val>
@@ -3966,8 +3969,8 @@
<Item ItemId=";Infer_type_of_0_from_usage_95011" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Infer type of '{0}' from usage]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[从用法中推断“{0}”的类型]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[根据使用情况推断“{0}”的类型]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Infer type of '{0}' from usage.]]></Val>
@@ -3978,8 +3981,8 @@
<Item ItemId=";Initialize_property_0_in_the_constructor_90020" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Initialize property '{0}' in the constructor]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[初始化构造函数中的属性“{0}”]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[初始化构造函数中的属性“{0}”]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Initialize property '{0}' in the constructor.]]></Val>
@@ -3990,8 +3993,8 @@
<Item ItemId=";Initialize_static_property_0_90021" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Initialize static property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[初始化静态属性“{0}”]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[初始化静态属性“{0}”]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Initialize static property '{0}'.]]></Val>
@@ -4527,8 +4530,8 @@
<Item ItemId=";Make_super_call_the_first_statement_in_the_constructor_90002" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Make 'super()' call the first statement in the constructor]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[在构造函数中,使 "super()" 调用第一个语句]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[在构造函数中,使 "super()" 调用第一个语句]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Make 'super()' call the first statement in the constructor.]]></Val>
@@ -4749,6 +4752,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Multiple_consecutive_numeric_separators_are_not_permitted_6189" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Multiple consecutive numeric separators are not permitted.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[不允许使用多个连续的数字分隔符。]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Multiple_constructor_implementations_are_not_allowed_2392" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Multiple constructor implementations are not allowed.]]></Val>
@@ -4839,6 +4851,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Numeric_separators_are_not_allowed_here_6188" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Numeric separators are not allowed here.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[此处不允许使用数字分隔符。]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Object_is_possibly_null_2531" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Object is possibly 'null'.]]></Val>
@@ -5445,8 +5466,8 @@
<Item ItemId=";Prefix_0_with_an_underscore_90025" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Prefix '{0}' with an underscore]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[带下划线的前缀“{0}”]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[带下划线的前缀“{0}”]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Prefix '{0}' with an underscore.]]></Val>
@@ -5901,8 +5922,8 @@
<Item ItemId=";Remove_declaration_for_Colon_0_90004" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Remove declaration for: '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[删除“{0}”的声明]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[删除“{0}”的声明]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Remove declaration for: '{0}'.]]></Val>
@@ -6330,8 +6351,8 @@
<Item ItemId=";Rewrite_as_the_indexed_access_type_0_90026" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Rewrite as the indexed access type '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[重写为索引访问类型“{0}”]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[重写为索引访问类型“{0}”]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Rewrite as the indexed access type '{0}'.]]></Val>
@@ -6450,6 +6471,9 @@
<Item ItemId=";Specify_ECMAScript_target_version_Colon_ES3_default_ES5_ES2015_ES2016_ES2017_ES2018_or_ESNEXT_6015" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[指定 ECMAScript 目标版本: "ES3" (默认)、"ES5"、"ES2015"、"ES2016"、"ES2017"、"ES2018" 或 "ESNEXT"。]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -6558,6 +6582,9 @@
<Item ItemId=";Starting_compilation_in_watch_mode_6031" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Starting compilation in watch mode...]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[在监视模式下开始编译...]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -7413,6 +7440,9 @@
<Item ItemId=";Type_0_is_not_assignable_to_type_1_Two_different_types_with_this_name_exist_but_they_are_unrelated_2719" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Type '{0}' is not assignable to type '{1}'. Two different types with this name exist, but they are unrelated.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[类型“{0}”无法分配给类型“{1}”。存在具有此名称的两种不同类型,但它们是不相关的。]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -867,8 +867,8 @@
<Item ItemId=";Add_0_to_existing_import_declaration_from_1_90015" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add '{0}' to existing import declaration from "{1}"]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[從 "{1}" 將 '{0}' 新增至現有的匯入宣告]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[從 "{1}" 將 '{0}' 新增至現有的匯入宣告]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add '{0}' to existing import declaration from "{1}".]]></Val>
@@ -879,8 +879,8 @@
<Item ItemId=";Add_index_signature_for_property_0_90017" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add index signature for property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[為屬性 '{0}' 新增索引簽章]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[為屬性 '{0}' 新增索引簽章]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add index signature for property '{0}'.]]></Val>
@@ -891,8 +891,8 @@
<Item ItemId=";Add_missing_super_call_90001" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add missing 'super()' call]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[新增遺漏的 'super()' 呼叫]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[新增遺漏的 'super()' 呼叫]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add missing 'super()' call.]]></Val>
@@ -903,8 +903,8 @@
<Item ItemId=";Add_this_to_unresolved_variable_90008" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add 'this.' to unresolved variable]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[將 'this.' 新增到未經解析的變數]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[將 'this' 新增至未解析的變數]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add 'this.' to unresolved variable.]]></Val>
@@ -915,6 +915,9 @@
<Item ItemId=";Adding_a_tsconfig_json_file_will_help_organize_projects_that_contain_both_TypeScript_and_JavaScript__5068" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Adding a tsconfig.json file will help organize projects that contain both TypeScript and JavaScript files. Learn more at https://aka.ms/tsconfig.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[新增 tsconfig.json 檔案有助於組織同時包含 TypeScript 及 JavaScript 檔案的專案。若要深入了解,請前往 https://aka.ms/tsconfig。]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -1545,8 +1548,8 @@
<Item ItemId=";Call_decorator_expression_90028" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Call decorator expression]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[呼叫裝飾項目運算式]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[呼叫裝飾項目運算式]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Call decorator expression.]]></Val>
@@ -1962,8 +1965,8 @@
<Item ItemId=";Change_0_to_1_90014" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Change '{0}' to '{1}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[將 '{0}' 變更為 '{1}']]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[將 '{0}' 變更為 '{1}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Change '{0}' to '{1}'.]]></Val>
@@ -1986,8 +1989,8 @@
<Item ItemId=";Change_spelling_to_0_90022" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Change spelling to '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[將拼字變更為 '{0}']]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[將拼字變更為 '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Change spelling to '{0}'.]]></Val>
@@ -2067,6 +2070,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclas_2720" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Class '{0}' incorrectly implements class '{1}'. Did you mean to extend '{1}' and inherit its members as a subclass?]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[類別 '{0}' 不當實作類別 '{1}'。您是否要擴充 '{1}',並繼承其成員以成為子類別?]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Class_0_incorrectly_implements_interface_1_2420" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Class '{0}' incorrectly implements interface '{1}'.]]></Val>
@@ -2364,8 +2376,8 @@
<Item ItemId=";Declare_method_0_90023" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare method '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[宣告方法 '{0}']]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[宣告方法 '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare method '{0}'.]]></Val>
@@ -2376,8 +2388,8 @@
<Item ItemId=";Declare_property_0_90016" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[宣告屬性 '{0}']]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[宣告屬性 '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare property '{0}'.]]></Val>
@@ -2388,8 +2400,8 @@
<Item ItemId=";Declare_static_method_0_90024" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare static method '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[宣告靜態方法 '{0}']]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[宣告靜態方法 '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare static method '{0}'.]]></Val>
@@ -2400,8 +2412,8 @@
<Item ItemId=";Declare_static_property_0_90027" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare static property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[宣告靜態屬性 '{0}']]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[宣告靜態屬性 '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare static property '{0}'.]]></Val>
@@ -2484,8 +2496,8 @@
<Item ItemId=";Disable_checking_for_this_file_90018" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Disable checking for this file]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[停用此檔案的檢查]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[停用此檔案的檢查]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Disable checking for this file.]]></Val>
@@ -3244,7 +3256,7 @@
<Str Cat="Text">
<Val><![CDATA[Expression resolves to variable declaration '_newTarget' that compiler uses to capture 'new.target' meta-property reference.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[運算式解析成編譯器用來擷取 'new.target' 中繼屬性參考的變數宣告 '_newTarget'。]]></Val>
<Val><![CDATA[運算式解析成變數宣告 '_newTarget',而供編譯器用來擷取 'new.target' 中繼屬性參考。]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -3453,15 +3465,6 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";File_specification_cannot_contain_multiple_recursive_directory_wildcards_Asterisk_Asterisk_Colon_0_5011" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[File specification cannot contain multiple recursive directory wildcards ('**'): '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[檔案規格不能包含多個遞迴目錄萬用字元 ('**'): '{0}'。]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";File_specification_cannot_end_in_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0_5010" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[File specification cannot end in a recursive directory wildcard ('**'): '{0}'.]]></Val>
@@ -3756,8 +3759,8 @@
<Item ItemId=";Ignore_this_error_message_90019" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Ignore this error message]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[略此錯誤訊息]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[略此錯誤訊息]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Ignore this error message.]]></Val>
@@ -3780,8 +3783,8 @@
<Item ItemId=";Implement_interface_0_90006" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Implement interface '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[實作介面 '{0}']]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[實作介面 '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Implement interface '{0}'.]]></Val>
@@ -3801,8 +3804,8 @@
<Item ItemId=";Import_0_from_module_1_90013" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Import '{0}' from module "{1}"]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[從模組 "{1}" 匯入 '{0}']]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[從模組 "{1}" 匯入 '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Import '{0}' from module "{1}".]]></Val>
@@ -3954,8 +3957,8 @@
<Item ItemId=";Infer_parameter_types_from_usage_95012" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Infer parameter types from usage]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[從用法推斷參數類型]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[從使用方式推斷參數類型]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Infer parameter types from usage.]]></Val>
@@ -3966,8 +3969,8 @@
<Item ItemId=";Infer_type_of_0_from_usage_95011" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Infer type of '{0}' from usage]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[從用法推斷 '{0}' 的類型]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[從使用方式推斷 '{0}' 的類型]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Infer type of '{0}' from usage.]]></Val>
@@ -3978,8 +3981,8 @@
<Item ItemId=";Initialize_property_0_in_the_constructor_90020" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Initialize property '{0}' in the constructor]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[初始化建構函式中的屬性 '{0}']]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[建構函式中的屬性 '{0}' 初始化]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Initialize property '{0}' in the constructor.]]></Val>
@@ -3990,8 +3993,8 @@
<Item ItemId=";Initialize_static_property_0_90021" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Initialize static property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[初始化靜態屬性 '{0}']]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[靜態屬性 '{0}' 初始化]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Initialize static property '{0}'.]]></Val>
@@ -4527,8 +4530,8 @@
<Item ItemId=";Make_super_call_the_first_statement_in_the_constructor_90002" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Make 'super()' call the first statement in the constructor]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[使 'super()' 呼叫成為建構函式中的第一個陳述式]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[使 'super()' 呼叫成為建構函式中的第一個陳述式]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Make 'super()' call the first statement in the constructor.]]></Val>
@@ -4749,6 +4752,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Multiple_consecutive_numeric_separators_are_not_permitted_6189" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Multiple consecutive numeric separators are not permitted.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[不允許多個連續的數字分隔符號。]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Multiple_constructor_implementations_are_not_allowed_2392" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Multiple constructor implementations are not allowed.]]></Val>
@@ -4839,6 +4851,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Numeric_separators_are_not_allowed_here_6188" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Numeric separators are not allowed here.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[這裡不允許數字分隔符號。]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Object_is_possibly_null_2531" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Object is possibly 'null'.]]></Val>
@@ -5445,8 +5466,8 @@
<Item ItemId=";Prefix_0_with_an_underscore_90025" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Prefix '{0}' with an underscore]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[有底線的前置詞 '{0}']]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[有底線的前置詞 '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Prefix '{0}' with an underscore.]]></Val>
@@ -5901,8 +5922,8 @@
<Item ItemId=";Remove_declaration_for_Colon_0_90004" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Remove declaration for: '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[移除 {0} 的宣告]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[移除 '{0}' 的宣告]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Remove declaration for: '{0}'.]]></Val>
@@ -6330,8 +6351,8 @@
<Item ItemId=";Rewrite_as_the_indexed_access_type_0_90026" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Rewrite as the indexed access type '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[重寫為索引存取類型 '{0}']]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[重寫為索引存取類型 '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Rewrite as the indexed access type '{0}'.]]></Val>
@@ -6450,6 +6471,9 @@
<Item ItemId=";Specify_ECMAScript_target_version_Colon_ES3_default_ES5_ES2015_ES2016_ES2017_ES2018_or_ESNEXT_6015" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[指定 ECMAScript 目標版本: 'ES3' (預設)、'ES5'、'ES2015'、'ES2016'、'ES2017'、'ES2018' 或 'ESNEXT'。]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -6558,6 +6582,9 @@
<Item ItemId=";Starting_compilation_in_watch_mode_6031" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Starting compilation in watch mode...]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[在監看模式中開始編譯...]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -6628,7 +6655,7 @@
<Str Cat="Text">
<Val><![CDATA[Stylize errors and messages using color and context (experimental).]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[使用色彩及內容設計錯誤與訊息的風格 (實驗)。]]></Val>
<Val><![CDATA[使用色彩及內容設計錯誤與訊息的風格 (實驗)。]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Stylize errors and messages using color and context. (experimental)]]></Val>
@@ -7413,6 +7440,9 @@
<Item ItemId=";Type_0_is_not_assignable_to_type_1_Two_different_types_with_this_name_exist_but_they_are_unrelated_2719" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Type '{0}' is not assignable to type '{1}'. Two different types with this name exist, but they are unrelated.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[無法將類型 '{0}' 指派給類型 '{1}'。有兩種使用此名稱的不同類型存在,但彼此並不相關。]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -876,8 +876,8 @@
<Item ItemId=";Add_0_to_existing_import_declaration_from_1_90015" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add '{0}' to existing import declaration from "{1}"]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Přidá {0} k existující deklaraci importu z {1}.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Přidat {0} k existující deklaraci importu z {1}]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add '{0}' to existing import declaration from "{1}".]]></Val>
@@ -888,7 +888,7 @@
<Item ItemId=";Add_index_signature_for_property_0_90017" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add index signature for property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Přidat signaturu indexu pro vlastnost {0}]]></Val>
</Tgt>
<Prev Cat="Text">
@@ -900,8 +900,8 @@
<Item ItemId=";Add_missing_super_call_90001" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add missing 'super()' call]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Přidejte chybějící volání metody super().]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Přidat chybějící volání metody super()]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add missing 'super()' call.]]></Val>
@@ -912,8 +912,8 @@
<Item ItemId=";Add_this_to_unresolved_variable_90008" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add 'this.' to unresolved variable]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Přidejte k nerozpoznané proměnné this.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Přidat k nerozpoznané proměnné this.]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add 'this.' to unresolved variable.]]></Val>
@@ -924,6 +924,9 @@
<Item ItemId=";Adding_a_tsconfig_json_file_will_help_organize_projects_that_contain_both_TypeScript_and_JavaScript__5068" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Adding a tsconfig.json file will help organize projects that contain both TypeScript and JavaScript files. Learn more at https://aka.ms/tsconfig.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Přidání souboru tsconfig.json vám pomůže uspořádat projekty, které obsahují jak soubory TypeScript, tak soubory JavaScript. Další informace najdete na adrese https://aka.ms/tsconfig.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -1554,8 +1557,8 @@
<Item ItemId=";Call_decorator_expression_90028" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Call decorator expression]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Výraz pro volání dekoratéru]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Zavolat výraz dekorátoru]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Call decorator expression.]]></Val>
@@ -1971,7 +1974,7 @@
<Item ItemId=";Change_0_to_1_90014" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Change '{0}' to '{1}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Změnit {0} na {1}]]></Val>
</Tgt>
<Prev Cat="Text">
@@ -1995,7 +1998,7 @@
<Item ItemId=";Change_spelling_to_0_90022" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Change spelling to '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Změnit pravopis na {0}]]></Val>
</Tgt>
<Prev Cat="Text">
@@ -2076,6 +2079,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclas_2720" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Class '{0}' incorrectly implements class '{1}'. Did you mean to extend '{1}' and inherit its members as a subclass?]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Třída {0} nesprávně implementuje třídu {1}. Nechtěli jste rozšířit třídu {1} a dědit její členy jako podtřídu?]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Class_0_incorrectly_implements_interface_1_2420" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Class '{0}' incorrectly implements interface '{1}'.]]></Val>
@@ -2098,7 +2110,7 @@
<Str Cat="Text">
<Val><![CDATA[Class declarations cannot have more than one `@augments` or `@extends` tag.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Deklarace tříd nemůžou obsahovat více než jednu značku @augments nebo @extends.]]></Val>
<Val><![CDATA[Deklarace tříd nemůžou t více než jednu značku @augments nebo @extends.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -2373,8 +2385,8 @@
<Item ItemId=";Declare_method_0_90023" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare method '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Deklarujte metodu {0}.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Deklarovat metodu {0}]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare method '{0}'.]]></Val>
@@ -2385,8 +2397,8 @@
<Item ItemId=";Declare_property_0_90016" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Deklarujte vlastnost {0}.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Deklarovat vlastnost {0}]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare property '{0}'.]]></Val>
@@ -2397,8 +2409,8 @@
<Item ItemId=";Declare_static_method_0_90024" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare static method '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Deklarujte statickou metodu {0}.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Deklarovat statickou metodu {0}]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare static method '{0}'.]]></Val>
@@ -2409,8 +2421,8 @@
<Item ItemId=";Declare_static_property_0_90027" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare static property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Deklarujte statickou vlastnost {0}.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Deklarovat statickou vlastnost {0}]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare static property '{0}'.]]></Val>
@@ -2493,7 +2505,7 @@
<Item ItemId=";Disable_checking_for_this_file_90018" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Disable checking for this file]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Zakázat kontrolu tohoto souboru]]></Val>
</Tgt>
<Prev Cat="Text">
@@ -2860,7 +2872,7 @@
<Str Cat="Text">
<Val><![CDATA[Enable strict checking of function types.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Povolte striktní kontrolu typů funkcí.]]></Val>
<Val><![CDATA[Povolí striktní kontrolu typů funkcí.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -3462,15 +3474,6 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";File_specification_cannot_contain_multiple_recursive_directory_wildcards_Asterisk_Asterisk_Colon_0_5011" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[File specification cannot contain multiple recursive directory wildcards ('**'): '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Specifikace souboru nemůže obsahovat víc než jeden rekurzivní zástupný znak adresáře (**): {0}.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";File_specification_cannot_end_in_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0_5010" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[File specification cannot end in a recursive directory wildcard ('**'): '{0}'.]]></Val>
@@ -3765,7 +3768,7 @@
<Item ItemId=";Ignore_this_error_message_90019" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Ignore this error message]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Ignorovat tuto chybovou zprávu]]></Val>
</Tgt>
<Prev Cat="Text">
@@ -3789,8 +3792,8 @@
<Item ItemId=";Implement_interface_0_90006" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Implement interface '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Implementujte rozhraní {0}.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Implementovat rozhraní {0}]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Implement interface '{0}'.]]></Val>
@@ -3810,8 +3813,8 @@
<Item ItemId=";Import_0_from_module_1_90013" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Import '{0}' from module "{1}"]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Import {0} z modulu {1}]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Importovat {0} z modulu {1}]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Import '{0}' from module "{1}".]]></Val>
@@ -3963,8 +3966,8 @@
<Item ItemId=";Infer_parameter_types_from_usage_95012" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Infer parameter types from usage]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Odvodit typy parametrů z používání]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Odvodit typy parametrů z využití]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Infer parameter types from usage.]]></Val>
@@ -3975,8 +3978,8 @@
<Item ItemId=";Infer_type_of_0_from_usage_95011" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Infer type of '{0}' from usage]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Odvodit typ {0} z používání]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Odvodit typ {0} z využití]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Infer type of '{0}' from usage.]]></Val>
@@ -3987,7 +3990,7 @@
<Item ItemId=";Initialize_property_0_in_the_constructor_90020" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Initialize property '{0}' in the constructor]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Inicializovat vlastnost {0} v konstruktoru]]></Val>
</Tgt>
<Prev Cat="Text">
@@ -3999,7 +4002,7 @@
<Item ItemId=";Initialize_static_property_0_90021" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Initialize static property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Inicializovat statickou vlastnost {0}]]></Val>
</Tgt>
<Prev Cat="Text">
@@ -4222,7 +4225,7 @@
<Str Cat="Text">
<Val><![CDATA[JSDoc '@param' tag has name '{0}', but there is no parameter with that name.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Značka JSDoc @param má název {0}, ale žádný parametr s tímto názvem neexistuje.]]></Val>
<Val><![CDATA[Značka JSDoc @param má název {0}, ale neexistuje žádný parametr s tímto názvem.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -4231,7 +4234,7 @@
<Str Cat="Text">
<Val><![CDATA[JSDoc '@typedef' tag should either have a type annotation or be followed by '@property' or '@member' tags.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Značka JSDoc @typedef by měla mít anotaci typu nebo by za ní měla následovat značka @property nebo @member.]]></Val>
<Val><![CDATA[Značka JSDoc @typedef by měla mít poznámku k typu nebo by za ní měly následovat značky @property nebo @member.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -4536,7 +4539,7 @@
<Item ItemId=";Make_super_call_the_first_statement_in_the_constructor_90002" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Make 'super()' call the first statement in the constructor]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Nastavit volání metody super() jako první příkaz v konstruktoru]]></Val>
</Tgt>
<Prev Cat="Text">
@@ -4758,6 +4761,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Multiple_consecutive_numeric_separators_are_not_permitted_6189" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Multiple consecutive numeric separators are not permitted.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Více po sobě jdoucích číselných oddělovačů se nepovoluje.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Multiple_constructor_implementations_are_not_allowed_2392" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Multiple constructor implementations are not allowed.]]></Val>
@@ -4848,6 +4860,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Numeric_separators_are_not_allowed_here_6188" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Numeric separators are not allowed here.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Číselné oddělovače tady nejsou povolené.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Object_is_possibly_null_2531" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Object is possibly 'null'.]]></Val>
@@ -5454,7 +5475,7 @@
<Item ItemId=";Prefix_0_with_an_underscore_90025" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Prefix '{0}' with an underscore]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Předpona {0} s podtržítkem]]></Val>
</Tgt>
<Prev Cat="Text">
@@ -5910,8 +5931,8 @@
<Item ItemId=";Remove_declaration_for_Colon_0_90004" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Remove declaration for: '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Odeberte deklaraci pro {0}.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Odebrat deklaraci pro {0}]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Remove declaration for: '{0}'.]]></Val>
@@ -6339,8 +6360,8 @@
<Item ItemId=";Rewrite_as_the_indexed_access_type_0_90026" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Rewrite as the indexed access type '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Proveďte přepis jako indexovaný přístupový typ {0}.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Přepsat jako indexovaný typ přístupu {0}]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Rewrite as the indexed access type '{0}'.]]></Val>
@@ -6415,7 +6436,7 @@
<Str Cat="Text">
<Val><![CDATA[Signature '{0}' must be a type predicate.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Podpis {0} musí být predikát typu.]]></Val>
<Val><![CDATA[Signatura {0} musí být predikát typu.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -6459,6 +6480,9 @@
<Item ItemId=";Specify_ECMAScript_target_version_Colon_ES3_default_ES5_ES2015_ES2016_ES2017_ES2018_or_ESNEXT_6015" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Zadejte cílovou verzi ECMAScriptu: ES3 (výchozí), ES5, ES2015, ES2016, ES2017, ES2018 nebo ESNEXT.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -6567,6 +6591,9 @@
<Item ItemId=";Starting_compilation_in_watch_mode_6031" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Starting compilation in watch mode...]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Spouští se kompilace v režimu sledování...]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -7422,6 +7449,9 @@
<Item ItemId=";Type_0_is_not_assignable_to_type_1_Two_different_types_with_this_name_exist_but_they_are_unrelated_2719" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Type '{0}' is not assignable to type '{1}'. Two different types with this name exist, but they are unrelated.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Typ {0} se nedá přiřadit typu {1}. Existují dva různé typy s tímto názvem, ale nesouvisí spolu.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -8695,7 +8725,7 @@
<Str Cat="Text">
<Val><![CDATA['package.json' does not have a '{0}' field.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[package.json ne pole {0}.]]></Val>
<Val><![CDATA[Soubor package.json neobsahuje pole {0}.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -864,8 +864,8 @@
<Item ItemId=";Add_0_to_existing_import_declaration_from_1_90015" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add '{0}' to existing import declaration from "{1}"]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Fügen Sie "{0}" zur vorhandenen Importdeklaration aus "{1}" hinzu.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA["{0}" der vorhandenen Importdeklaration aus "{1}" hinzufügen]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add '{0}' to existing import declaration from "{1}".]]></Val>
@@ -876,8 +876,8 @@
<Item ItemId=";Add_index_signature_for_property_0_90017" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add index signature for property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Indexsignatur für die Eigenschaft "{0}" hinzufügen.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Indexsignatur für die Eigenschaft "{0}" hinzufügen]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add index signature for property '{0}'.]]></Val>
@@ -888,8 +888,8 @@
<Item ItemId=";Add_missing_super_call_90001" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add missing 'super()' call]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Fügen Sie den fehlenden super()-Aufruf hinzu.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Fehlenden super()-Aufruf hinzufügen]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add missing 'super()' call.]]></Val>
@@ -900,8 +900,8 @@
<Item ItemId=";Add_this_to_unresolved_variable_90008" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add 'this.' to unresolved variable]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Der nicht aufgelösten Variablen "this." hinzufügen.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Der nicht aufgelösten Variablen "this." hinzufügen]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add 'this.' to unresolved variable.]]></Val>
@@ -912,6 +912,9 @@
<Item ItemId=";Adding_a_tsconfig_json_file_will_help_organize_projects_that_contain_both_TypeScript_and_JavaScript__5068" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Adding a tsconfig.json file will help organize projects that contain both TypeScript and JavaScript files. Learn more at https://aka.ms/tsconfig.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Das Hinzufügen einer "tsconfig.json"-Datei erleichtert die Organisation von Projekten, die sowohl TypeScript- als auch JavaScript-Dateien enthalten. Weitere Informationen finden Sie unter https://aka.ms/tsconfig.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -1542,8 +1545,8 @@
<Item ItemId=";Call_decorator_expression_90028" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Call decorator expression]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Rufen Sie den Decoratorausdruck auf.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Decorator-Ausdruck aufrufen]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Call decorator expression.]]></Val>
@@ -1959,8 +1962,8 @@
<Item ItemId=";Change_0_to_1_90014" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Change '{0}' to '{1}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Ändern Sie "{0}" in "{1}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA["{0}" in "{1}" ändern]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Change '{0}' to '{1}'.]]></Val>
@@ -1983,8 +1986,8 @@
<Item ItemId=";Change_spelling_to_0_90022" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Change spelling to '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Ändern Sie die Schreibweise in "{0}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Schreibweise in "{0}" ändern]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Change spelling to '{0}'.]]></Val>
@@ -2064,6 +2067,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclas_2720" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Class '{0}' incorrectly implements class '{1}'. Did you mean to extend '{1}' and inherit its members as a subclass?]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Die Klasse "{0}" implementiert fälschlicherweise die Klasse "{1}". Wollten Sie "{1}" erweitern und ihre Member als Unterklasse vererben?]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Class_0_incorrectly_implements_interface_1_2420" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Class '{0}' incorrectly implements interface '{1}'.]]></Val>
@@ -2188,7 +2200,7 @@
<Str Cat="Text">
<Val><![CDATA[Computed values are not permitted in an enum with string valued members.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Berechnete Werte sind in einer Aufzählung mit Membern mit Zeichenfolgenwerten nicht zulässig.]]></Val>
<Val><![CDATA[Berechnete Werte sind in einer Enumeration mit Membern mit Zeichenfolgenwerten nicht zulässig.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -2361,8 +2373,8 @@
<Item ItemId=";Declare_method_0_90023" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare method '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Methode "{0}" deklarieren.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Methode "{0}" deklarieren]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare method '{0}'.]]></Val>
@@ -2373,8 +2385,8 @@
<Item ItemId=";Declare_property_0_90016" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Eigenschaft "{0}" deklarieren.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Eigenschaft "{0}" deklarieren]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare property '{0}'.]]></Val>
@@ -2385,8 +2397,8 @@
<Item ItemId=";Declare_static_method_0_90024" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare static method '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Statische Methode "{0}" deklarieren.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Statische Methode "{0}" deklarieren]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare static method '{0}'.]]></Val>
@@ -2397,8 +2409,8 @@
<Item ItemId=";Declare_static_property_0_90027" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare static property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Deklarieren Sie die statische Eigenschaft "{0}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Statische Eigenschaft "{0}" deklarieren]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare static property '{0}'.]]></Val>
@@ -2481,8 +2493,8 @@
<Item ItemId=";Disable_checking_for_this_file_90018" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Disable checking for this file]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Überprüfung für diese Datei deaktivieren.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Überprüfung für diese Datei deaktivieren]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Disable checking for this file.]]></Val>
@@ -3450,15 +3462,6 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";File_specification_cannot_contain_multiple_recursive_directory_wildcards_Asterisk_Asterisk_Colon_0_5011" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[File specification cannot contain multiple recursive directory wildcards ('**'): '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Die Dateispezifikation darf nicht mehrere rekursive Verzeichnisplatzhalter enthalten ("**"): "{0}".]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";File_specification_cannot_end_in_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0_5010" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[File specification cannot end in a recursive directory wildcard ('**'): '{0}'.]]></Val>
@@ -3753,8 +3756,8 @@
<Item ItemId=";Ignore_this_error_message_90019" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Ignore this error message]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Diese Fehlermeldung ignorieren.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Diese Fehlermeldung ignorieren]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Ignore this error message.]]></Val>
@@ -3777,7 +3780,7 @@
<Item ItemId=";Implement_interface_0_90006" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Implement interface '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Schnittstelle "{0}" implementieren]]></Val>
</Tgt>
<Prev Cat="Text">
@@ -3798,8 +3801,8 @@
<Item ItemId=";Import_0_from_module_1_90013" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Import '{0}' from module "{1}"]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Import von "{0}" aus Modul "{1}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA["{0}" aus dem Modul "{1}" importieren]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Import '{0}' from module "{1}".]]></Val>
@@ -3951,8 +3954,8 @@
<Item ItemId=";Infer_parameter_types_from_usage_95012" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Infer parameter types from usage]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Leiten Sie Parametertypen aus der Nutzung ab.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Parametertypen aus der Nutzung ableiten]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Infer parameter types from usage.]]></Val>
@@ -3963,8 +3966,8 @@
<Item ItemId=";Infer_type_of_0_from_usage_95011" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Infer type of '{0}' from usage]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Leiten Sie den Typ von "{0}" aus der Nutzung ab.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Typ von "{0}" aus der Nutzung ableiten]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Infer type of '{0}' from usage.]]></Val>
@@ -3975,8 +3978,8 @@
<Item ItemId=";Initialize_property_0_in_the_constructor_90020" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Initialize property '{0}' in the constructor]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Eigenschaft '{0}' im Konstruktor initialisieren.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Eigenschaft "{0}" im Konstruktor initialisieren]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Initialize property '{0}' in the constructor.]]></Val>
@@ -3987,8 +3990,8 @@
<Item ItemId=";Initialize_static_property_0_90021" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Initialize static property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Statische Eigenschaft '{0}' initialisieren.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Statische Eigenschaft "{0}" initialisieren]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Initialize static property '{0}'.]]></Val>
@@ -4524,8 +4527,8 @@
<Item ItemId=";Make_super_call_the_first_statement_in_the_constructor_90002" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Make 'super()' call the first statement in the constructor]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Legen Sie den super()-Aufruf als erste Anweisung im Konstruktor fest.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[super()-Aufruf als erste Anweisung im Konstruktor festlegen]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Make 'super()' call the first statement in the constructor.]]></Val>
@@ -4746,6 +4749,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Multiple_consecutive_numeric_separators_are_not_permitted_6189" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Multiple consecutive numeric separators are not permitted.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Mehrere aufeinander folgende numerische Trennzeichen sind nicht zulässig.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Multiple_constructor_implementations_are_not_allowed_2392" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Multiple constructor implementations are not allowed.]]></Val>
@@ -4836,6 +4848,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Numeric_separators_are_not_allowed_here_6188" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Numeric separators are not allowed here.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Numerische Trennzeichen sind hier nicht zulässig.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Object_is_possibly_null_2531" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Object is possibly 'null'.]]></Val>
@@ -5439,8 +5460,8 @@
<Item ItemId=";Prefix_0_with_an_underscore_90025" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Prefix '{0}' with an underscore]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Präfix "{0}" mit einem Unterstrich.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA["{0}" einen Unterstrich voranstellen]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Prefix '{0}' with an underscore.]]></Val>
@@ -5895,7 +5916,7 @@
<Item ItemId=";Remove_declaration_for_Colon_0_90004" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Remove declaration for: '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Deklaration entfernen für: {0}]]></Val>
</Tgt>
<Prev Cat="Text">
@@ -6321,8 +6342,8 @@
<Item ItemId=";Rewrite_as_the_indexed_access_type_0_90026" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Rewrite as the indexed access type '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Als indizierten Zugriffstyp "{0}" neu schreiben.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Als indizierten Zugriffstyp "{0}" neu schreiben]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Rewrite as the indexed access type '{0}'.]]></Val>
@@ -6441,6 +6462,9 @@
<Item ItemId=";Specify_ECMAScript_target_version_Colon_ES3_default_ES5_ES2015_ES2016_ES2017_ES2018_or_ESNEXT_6015" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[ECMAScript-Zielversion angeben: ES3 (Standard), ES5, ES2015, ES2016, ES2017, ES2018 oder ESNEXT.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -6549,6 +6573,9 @@
<Item ItemId=";Starting_compilation_in_watch_mode_6031" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Starting compilation in watch mode...]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Kompilierung im Überwachungsmodus wird gestartet...]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -7404,6 +7431,9 @@
<Item ItemId=";Type_0_is_not_assignable_to_type_1_Two_different_types_with_this_name_exist_but_they_are_unrelated_2719" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Type '{0}' is not assignable to type '{1}'. Two different types with this name exist, but they are unrelated.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Der Typ "{0}" kann dem Typ "{1}" nicht zugewiesen werden. Es sind zwei verschiedene Typen mit diesem Namen vorhanden, diese sind jedoch nicht verwandt.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -427,7 +427,7 @@
<Str Cat="Text">
<Val><![CDATA[A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Un inicializador de miembro de una declaración enum no puede hacer referencia a los miembros que se declaran después de este, incluidos aquellos definidos en otras enumeraciones.]]></Val>
<Val><![CDATA[Un inicializador de miembro de una declaración de enumeración no puede hacer referencia a los miembros que se declaran después de este, incluidos aquellos definidos en otras enumeraciones.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -436,7 +436,7 @@
<Str Cat="Text">
<Val><![CDATA[A mixin class must have a constructor with a single rest parameter of type 'any[]5D;'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Una clase mixin debe tener un constructor con un parámetro de REST sencillo del tipo "any[]5D;".]]></Val>
<Val><![CDATA[Una clase mixin debe tener un constructor con un solo parámetro rest de tipo "any[]5D;"]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -523,7 +523,7 @@
<Str Cat="Text">
<Val><![CDATA[A path in an 'extends' option must be relative or rooted, but '{0}' is not.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Una ruta de acceso en una opción "extiende" debe ser relativa o raíz, pero no '{0}'.]]></Val>
<Val><![CDATA[Una ruta de acceso en una opción "extiende" debe ser relativa o raíz, pero no "{0}".]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -876,8 +876,8 @@
<Item ItemId=";Add_0_to_existing_import_declaration_from_1_90015" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add '{0}' to existing import declaration from "{1}"]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Agregue "{0}" a una declaración de importación existente desde "{1}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Agregar "{0}" a una declaración de importación existente desde "{1}"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add '{0}' to existing import declaration from "{1}".]]></Val>
@@ -888,8 +888,8 @@
<Item ItemId=";Add_index_signature_for_property_0_90017" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add index signature for property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Agregue una firma de índice para la propiedad "{0}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Agregar una signatura de índice para la propiedad "{0}"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add index signature for property '{0}'.]]></Val>
@@ -900,8 +900,8 @@
<Item ItemId=";Add_missing_super_call_90001" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add missing 'super()' call]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Agregue la llamada a "super()" que falta.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Agregar la llamada a "super()" que falta]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add missing 'super()' call.]]></Val>
@@ -912,8 +912,8 @@
<Item ItemId=";Add_this_to_unresolved_variable_90008" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add 'this.' to unresolved variable]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Agrega "this." a una variable no resuelta.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Agregar "this." a una variable no resuelta]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add 'this.' to unresolved variable.]]></Val>
@@ -924,6 +924,9 @@
<Item ItemId=";Adding_a_tsconfig_json_file_will_help_organize_projects_that_contain_both_TypeScript_and_JavaScript__5068" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Adding a tsconfig.json file will help organize projects that contain both TypeScript and JavaScript files. Learn more at https://aka.ms/tsconfig.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Agregar un archivo tsconfig.json ayuda a organizar los proyectos que contienen archivos TypeScript y JavaScript. Más información en https://aka.ms/tsconfig.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -1066,7 +1069,7 @@
<Str Cat="Text">
<Val><![CDATA[An arithmetic operand must be of type 'any', 'number' or an enum type.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Un operando aritmético debe ser de tipo "any", "number" o de tipo enum.]]></Val>
<Val><![CDATA[Un operando aritmético debe ser de tipo "any", "number" o un tipo de enumeración.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -1417,7 +1420,7 @@
<Str Cat="Text">
<Val><![CDATA[Argument for '{0}' option must be: {1}.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[El argumento para la opción '{0}' debe ser: {1}.]]></Val>
<Val><![CDATA[El argumento para la opción "{0}" debe ser {1}.]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Argument for '{0}' option must be: {1}]]></Val>
@@ -1429,7 +1432,7 @@
<Str Cat="Text">
<Val><![CDATA[Argument of type '{0}' is not assignable to parameter of type '{1}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[No se puede asignar un argumento de tipo '{0}' al parámetro de tipo '{1}'.]]></Val>
<Val><![CDATA[No se puede asignar un argumento de tipo "{0}" al parámetro de tipo "{1}".]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -1554,8 +1557,8 @@
<Item ItemId=";Call_decorator_expression_90028" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Call decorator expression]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Llame a la expresión decorador.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Llamar a la expresión decorador]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Call decorator expression.]]></Val>
@@ -1971,8 +1974,8 @@
<Item ItemId=";Change_0_to_1_90014" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Change '{0}' to '{1}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Cambie "{0}" a "{1}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Cambiar "{0}" a "{1}"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Change '{0}' to '{1}'.]]></Val>
@@ -1995,8 +1998,8 @@
<Item ItemId=";Change_spelling_to_0_90022" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Change spelling to '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Cambiar la ortografía a "{0}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Cambiar la ortografía a "{0}"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Change spelling to '{0}'.]]></Val>
@@ -2076,6 +2079,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclas_2720" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Class '{0}' incorrectly implements class '{1}'. Did you mean to extend '{1}' and inherit its members as a subclass?]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[La clase "{0}" no implementa correctamente la clase "{1}". ¿Pretendía extender "{1}" y heredar sus miembros como una subclase?]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Class_0_incorrectly_implements_interface_1_2420" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Class '{0}' incorrectly implements interface '{1}'.]]></Val>
@@ -2373,8 +2385,8 @@
<Item ItemId=";Declare_method_0_90023" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare method '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Declare el método "{0}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Declarar el método "{0}"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare method '{0}'.]]></Val>
@@ -2385,8 +2397,8 @@
<Item ItemId=";Declare_property_0_90016" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Declare la propiedad "{0}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Declarar la propiedad "{0}"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare property '{0}'.]]></Val>
@@ -2397,8 +2409,8 @@
<Item ItemId=";Declare_static_method_0_90024" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare static method '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Declare el método estático "{0}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Declarar el método estático "{0}"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare static method '{0}'.]]></Val>
@@ -2409,8 +2421,8 @@
<Item ItemId=";Declare_static_property_0_90027" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare static property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Declare la propiedad "{0}" estática.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Declarar la propiedad estática "{0}"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare static property '{0}'.]]></Val>
@@ -2493,8 +2505,8 @@
<Item ItemId=";Disable_checking_for_this_file_90018" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Disable checking for this file]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Deshabilite la comprobación para este archivo.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Deshabilitar la comprobación para este archivo]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Disable checking for this file.]]></Val>
@@ -2932,7 +2944,7 @@
<Str Cat="Text">
<Val><![CDATA[Enum declarations must all be const or non-const.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Todas las declaraciones enum deben ser de tipo const o no const.]]></Val>
<Val><![CDATA[Todas las declaraciones de enumeración deben ser de tipo const o no const.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -2971,7 +2983,7 @@
<Str Cat="Text">
<Val><![CDATA[Enum type '{0}' has members with initializers that are not literals.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Tipo enum '{0}' tiene miembros con inicializadores que no son literales.]]></Val>
<Val><![CDATA[El tipo de enumeración "{0}" tiene miembros con inicializadores que no son literales.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -3462,15 +3474,6 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";File_specification_cannot_contain_multiple_recursive_directory_wildcards_Asterisk_Asterisk_Colon_0_5011" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[File specification cannot contain multiple recursive directory wildcards ('**'): '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[La especificación de archivo no puede contener varios comodines de directorio recursivo ('**'): '{0}'.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";File_specification_cannot_end_in_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0_5010" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[File specification cannot end in a recursive directory wildcard ('**'): '{0}'.]]></Val>
@@ -3765,8 +3768,8 @@
<Item ItemId=";Ignore_this_error_message_90019" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Ignore this error message]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Ignore este mensaje de error.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Ignorar este mensaje de error]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Ignore this error message.]]></Val>
@@ -3789,8 +3792,8 @@
<Item ItemId=";Implement_interface_0_90006" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Implement interface '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Implementar interfaz "{0}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Implementar la interfaz "{0}"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Implement interface '{0}'.]]></Val>
@@ -3810,8 +3813,8 @@
<Item ItemId=";Import_0_from_module_1_90013" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Import '{0}' from module "{1}"]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Importar "{0}" desde el módulo "{1}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Importar "{0}" desde el módulo "{1}"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Import '{0}' from module "{1}".]]></Val>
@@ -3901,7 +3904,7 @@
<Str Cat="Text">
<Val><![CDATA[In ambient enum declarations member initializer must be constant expression.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[En las declaraciones enum de ambiente, el inicializador de miembro debe ser una expresión constante.]]></Val>
<Val><![CDATA[En las declaraciones de enumeración de ambiente, el inicializador de miembro debe ser una expresión constante.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -3963,8 +3966,8 @@
<Item ItemId=";Infer_parameter_types_from_usage_95012" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Infer parameter types from usage]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Infiera los tipos de parámetro del uso.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Deducir los tipos de parámetro del uso]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Infer parameter types from usage.]]></Val>
@@ -3975,8 +3978,8 @@
<Item ItemId=";Infer_type_of_0_from_usage_95011" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Infer type of '{0}' from usage]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Infiera el tipo de "{0}" del uso.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Deducir el tipo de "{0}" del uso]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Infer type of '{0}' from usage.]]></Val>
@@ -3987,8 +3990,8 @@
<Item ItemId=";Initialize_property_0_in_the_constructor_90020" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Initialize property '{0}' in the constructor]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Inicialice la propiedad "{0}" en el constructor.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Inicializar la propiedad "{0}" en el constructor]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Initialize property '{0}' in the constructor.]]></Val>
@@ -3999,8 +4002,8 @@
<Item ItemId=";Initialize_static_property_0_90021" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Initialize static property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Inicialice la propiedad estática "{0}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Inicializar la propiedad estática "{0}"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Initialize static property '{0}'.]]></Val>
@@ -4536,8 +4539,8 @@
<Item ItemId=";Make_super_call_the_first_statement_in_the_constructor_90002" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Make 'super()' call the first statement in the constructor]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Haga que la llamada a "super()" sea la primera instrucción del constructor.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Hacer que la llamada a "super()" sea la primera instrucción del constructor]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Make 'super()' call the first statement in the constructor.]]></Val>
@@ -4758,6 +4761,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Multiple_consecutive_numeric_separators_are_not_permitted_6189" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Multiple consecutive numeric separators are not permitted.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[No se permiten varios separadores numéricos consecutivos.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Multiple_constructor_implementations_are_not_allowed_2392" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Multiple constructor implementations are not allowed.]]></Val>
@@ -4848,6 +4860,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Numeric_separators_are_not_allowed_here_6188" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Numeric separators are not allowed here.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Aquí no se permiten separadores numéricos.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Object_is_possibly_null_2531" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Object is possibly 'null'.]]></Val>
@@ -5454,8 +5475,8 @@
<Item ItemId=";Prefix_0_with_an_underscore_90025" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Prefix '{0}' with an underscore]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Prefijo '{0}' con guion bajo.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Prefijo "{0}" con guion bajo]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Prefix '{0}' with an underscore.]]></Val>
@@ -5910,8 +5931,8 @@
<Item ItemId=";Remove_declaration_for_Colon_0_90004" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Remove declaration for: '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Quitar declaración de: "{0}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Quitar declaración de: "{0}"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Remove declaration for: '{0}'.]]></Val>
@@ -6339,8 +6360,8 @@
<Item ItemId=";Rewrite_as_the_indexed_access_type_0_90026" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Rewrite as the indexed access type '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Reescribir como el tipo de acceso indexado "{0}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Reescribir como tipo de acceso indexado "{0}"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Rewrite as the indexed access type '{0}'.]]></Val>
@@ -6459,6 +6480,9 @@
<Item ItemId=";Specify_ECMAScript_target_version_Colon_ES3_default_ES5_ES2015_ES2016_ES2017_ES2018_or_ESNEXT_6015" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Especifique la versión de ECMAScript de destino: "ES3" (valor predeterminado), "ES5", "ES2015", "ES2016", "ES2017", "ES2018" o "ESNEXT".]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -6567,6 +6591,9 @@
<Item ItemId=";Starting_compilation_in_watch_mode_6031" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Starting compilation in watch mode...]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Iniciando la compilación en modo de inspección...]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -6943,7 +6970,7 @@
<Str Cat="Text">
<Val><![CDATA[The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[La parte izquierda de una operación aritmética debe ser de tipo "any", "number" o un tipo enum.]]></Val>
<Val><![CDATA[La parte izquierda de una operación aritmética debe ser de tipo "any", "number" o un tipo de enumeración.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -7081,7 +7108,7 @@
<Str Cat="Text">
<Val><![CDATA[The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[La parte derecha de una operación aritmética debe ser de tipo "any", "number" o un tipo enum.]]></Val>
<Val><![CDATA[La parte derecha de una operación aritmética debe ser de tipo "any", "number" o un tipo de enumeración.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -7422,6 +7449,9 @@
<Item ItemId=";Type_0_is_not_assignable_to_type_1_Two_different_types_with_this_name_exist_but_they_are_unrelated_2719" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Type '{0}' is not assignable to type '{1}'. Two different types with this name exist, but they are unrelated.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[El tipo "{0}" no se puede asignar al tipo "{1}". Existen dos tipos distintos con este nombre, pero no están relacionados.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -876,8 +876,8 @@
<Item ItemId=";Add_0_to_existing_import_declaration_from_1_90015" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add '{0}' to existing import declaration from "{1}"]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Ajoutez '{0}' à une déclaration d'importation existante à partir de "{1}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Ajouter '{0}' à la déclaration d'importation existante de "{1}"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add '{0}' to existing import declaration from "{1}".]]></Val>
@@ -888,8 +888,8 @@
<Item ItemId=";Add_index_signature_for_property_0_90017" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add index signature for property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Ajoutez une signature d'index pour la propriété '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Ajouter une signature d'index pour la propriété '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add index signature for property '{0}'.]]></Val>
@@ -900,8 +900,8 @@
<Item ItemId=";Add_missing_super_call_90001" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add missing 'super()' call]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Ajoutez l'appel manquant à 'super()'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Ajouter l'appel manquant à 'super()']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add missing 'super()' call.]]></Val>
@@ -912,8 +912,8 @@
<Item ItemId=";Add_this_to_unresolved_variable_90008" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add 'this.' to unresolved variable]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Ajoutez 'this.' à la variable non résolue.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Ajouter 'this.' à la variable non résolue]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add 'this.' to unresolved variable.]]></Val>
@@ -924,6 +924,9 @@
<Item ItemId=";Adding_a_tsconfig_json_file_will_help_organize_projects_that_contain_both_TypeScript_and_JavaScript__5068" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Adding a tsconfig.json file will help organize projects that contain both TypeScript and JavaScript files. Learn more at https://aka.ms/tsconfig.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[L'ajout d'un fichier tsconfig.json permet d'organiser les projets qui contiennent des fichiers TypeScript et JavaScript. En savoir plus sur https://aka.ms/tsconfig.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -1554,8 +1557,8 @@
<Item ItemId=";Call_decorator_expression_90028" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Call decorator expression]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Appelez l'expression de l'élément décoratif.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Appeler l'expression de l'élément décoratif]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Call decorator expression.]]></Val>
@@ -1971,8 +1974,8 @@
<Item ItemId=";Change_0_to_1_90014" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Change '{0}' to '{1}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Changez '{0}' en '{1}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Changer '{0}' en '{1}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Change '{0}' to '{1}'.]]></Val>
@@ -1995,8 +1998,8 @@
<Item ItemId=";Change_spelling_to_0_90022" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Change spelling to '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Changez l'orthographe en '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Changer l'orthographe en '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Change spelling to '{0}'.]]></Val>
@@ -2076,6 +2079,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclas_2720" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Class '{0}' incorrectly implements class '{1}'. Did you mean to extend '{1}' and inherit its members as a subclass?]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[La classe '{0}' implémente de manière incorrecte la classe '{1}'. Voulez-vous vraiment étendre '{1}' et hériter de ses membres en tant que sous-classe ?]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Class_0_incorrectly_implements_interface_1_2420" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Class '{0}' incorrectly implements interface '{1}'.]]></Val>
@@ -2373,8 +2385,8 @@
<Item ItemId=";Declare_method_0_90023" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare method '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Déclarez la méthode '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Déclarer la méthode '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare method '{0}'.]]></Val>
@@ -2385,8 +2397,8 @@
<Item ItemId=";Declare_property_0_90016" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Déclarez la propriété '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Déclarer la propriété '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare property '{0}'.]]></Val>
@@ -2397,8 +2409,8 @@
<Item ItemId=";Declare_static_method_0_90024" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare static method '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Déclarez la méthode statique '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Déclarer la méthode statique '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare static method '{0}'.]]></Val>
@@ -2409,8 +2421,8 @@
<Item ItemId=";Declare_static_property_0_90027" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare static property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Déclarez la propriété statique '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Déclarer la propriété statique '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare static property '{0}'.]]></Val>
@@ -2493,8 +2505,8 @@
<Item ItemId=";Disable_checking_for_this_file_90018" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Disable checking for this file]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Désactivez la vérification de ce fichier.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Désactiver la vérification de ce fichier]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Disable checking for this file.]]></Val>
@@ -3462,15 +3474,6 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";File_specification_cannot_contain_multiple_recursive_directory_wildcards_Asterisk_Asterisk_Colon_0_5011" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[File specification cannot contain multiple recursive directory wildcards ('**'): '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Une spécification de fichier ne peut pas contenir plusieurs caractères génériques de répertoires récursifs ('**') : '{0}'.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";File_specification_cannot_end_in_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0_5010" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[File specification cannot end in a recursive directory wildcard ('**'): '{0}'.]]></Val>
@@ -3765,8 +3768,8 @@
<Item ItemId=";Ignore_this_error_message_90019" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Ignore this error message]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Ignorez ce message d'erreur.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Ignorer ce message d'erreur]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Ignore this error message.]]></Val>
@@ -3789,8 +3792,8 @@
<Item ItemId=";Implement_interface_0_90006" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Implement interface '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Implémentez l'interface '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Implémenter l'interface '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Implement interface '{0}'.]]></Val>
@@ -3810,8 +3813,8 @@
<Item ItemId=";Import_0_from_module_1_90013" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Import '{0}' from module "{1}"]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Importez '{0}' à partir du module "{1}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Importer '{0}' à partir du module "{1}"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Import '{0}' from module "{1}".]]></Val>
@@ -3963,8 +3966,8 @@
<Item ItemId=";Infer_parameter_types_from_usage_95012" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Infer parameter types from usage]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Déduisez les types des paramètres à partir de l'utilisation.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Déduire les types des paramètres à partir de l'utilisation]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Infer parameter types from usage.]]></Val>
@@ -3975,8 +3978,8 @@
<Item ItemId=";Infer_type_of_0_from_usage_95011" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Infer type of '{0}' from usage]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Déduisez le type de '{0}' à partir de l'utilisation.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Déduire le type de '{0}' à partir de l'utilisation]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Infer type of '{0}' from usage.]]></Val>
@@ -3987,8 +3990,8 @@
<Item ItemId=";Initialize_property_0_in_the_constructor_90020" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Initialize property '{0}' in the constructor]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Initialisez la propriété '{0}' dans le constructeur.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Initialiser la propriété '{0}' dans le constructeur]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Initialize property '{0}' in the constructor.]]></Val>
@@ -3999,8 +4002,8 @@
<Item ItemId=";Initialize_static_property_0_90021" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Initialize static property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Initialisez la propriété statique '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Initialiser la propriété statique '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Initialize static property '{0}'.]]></Val>
@@ -4536,8 +4539,8 @@
<Item ItemId=";Make_super_call_the_first_statement_in_the_constructor_90002" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Make 'super()' call the first statement in the constructor]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Faites de l'appel à 'super()' la première instruction du constructeur.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Faire de l'appel à 'super()' la première instruction du constructeur]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Make 'super()' call the first statement in the constructor.]]></Val>
@@ -4758,6 +4761,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Multiple_consecutive_numeric_separators_are_not_permitted_6189" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Multiple consecutive numeric separators are not permitted.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Les séparateurs numériques consécutifs multiples ne sont pas autorisés.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Multiple_constructor_implementations_are_not_allowed_2392" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Multiple constructor implementations are not allowed.]]></Val>
@@ -4848,6 +4860,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Numeric_separators_are_not_allowed_here_6188" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Numeric separators are not allowed here.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Les séparateurs numériques ne sont pas autorisés ici.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Object_is_possibly_null_2531" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Object is possibly 'null'.]]></Val>
@@ -4924,7 +4945,7 @@
<Str Cat="Text">
<Val><![CDATA[Octal literals are not allowed in enums members initializer. Use the syntax '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Les littéraux octaux ne sont pas autorisés dans l'initialiseur des membres d'énumérations. Utilisez la syntaxe '{0}'.]]></Val>
<Val><![CDATA[Les littéraux octaux ne sont pas autorisés dans l'initialiseur des membres d'enums. Utilisez la syntaxe '{0}'.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -5454,8 +5475,8 @@
<Item ItemId=";Prefix_0_with_an_underscore_90025" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Prefix '{0}' with an underscore]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Préfixez '{0}' avec un trait de soulignement.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Faire précéder '{0}' d'un trait de soulignement]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Prefix '{0}' with an underscore.]]></Val>
@@ -5503,7 +5524,7 @@
<Str Cat="Text">
<Val><![CDATA[Property '{0}' does not exist on 'const' enum '{1}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[La propriété '{0}' n'existe pas sur l'énumération 'const' '{1}'.]]></Val>
<Val><![CDATA[La propriété '{0}' n'existe pas sur l'enum 'const' '{1}'.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -5910,8 +5931,8 @@
<Item ItemId=";Remove_declaration_for_Colon_0_90004" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Remove declaration for: '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Supprimez la déclaration pour : '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Supprimer la déclaration pour : '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Remove declaration for: '{0}'.]]></Val>
@@ -6339,8 +6360,8 @@
<Item ItemId=";Rewrite_as_the_indexed_access_type_0_90026" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Rewrite as the indexed access type '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Réécrire en tant que type d'accès indexé '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Réécrire en tant que type d'accès indexé '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Rewrite as the indexed access type '{0}'.]]></Val>
@@ -6459,6 +6480,9 @@
<Item ItemId=";Specify_ECMAScript_target_version_Colon_ES3_default_ES5_ES2015_ES2016_ES2017_ES2018_or_ESNEXT_6015" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Spécifiez la version cible d'ECMAScript : 'ES3' (par défaut), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' ou 'ESNEXT'.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -6567,6 +6591,9 @@
<Item ItemId=";Starting_compilation_in_watch_mode_6031" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Starting compilation in watch mode...]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Démarrage de la compilation en mode espion...]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -7422,6 +7449,9 @@
<Item ItemId=";Type_0_is_not_assignable_to_type_1_Two_different_types_with_this_name_exist_but_they_are_unrelated_2719" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Type '{0}' is not assignable to type '{1}'. Two different types with this name exist, but they are unrelated.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Impossible d'assigner le type '{0}' au type '{1}'. Il existe deux types distincts portant ce nom, mais ils ne sont pas liés.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -867,8 +867,8 @@
<Item ItemId=";Add_0_to_existing_import_declaration_from_1_90015" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add '{0}' to existing import declaration from "{1}"]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Aggiungere '{0}' alla dichiarazione di importazione esistente da "{1}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Aggiungere '{0}' alla dichiarazione di importazione esistente da "{1}"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add '{0}' to existing import declaration from "{1}".]]></Val>
@@ -879,8 +879,8 @@
<Item ItemId=";Add_index_signature_for_property_0_90017" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add index signature for property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Aggiungere la firma dell'indice per la proprietà '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Aggiungere la firma dell'indice per la proprietà '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add index signature for property '{0}'.]]></Val>
@@ -891,8 +891,8 @@
<Item ItemId=";Add_missing_super_call_90001" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add missing 'super()' call]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Aggiunge la chiamata mancante a 'super()'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Aggiungere la chiamata mancante a 'super()']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add missing 'super()' call.]]></Val>
@@ -903,8 +903,8 @@
<Item ItemId=";Add_this_to_unresolved_variable_90008" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add 'this.' to unresolved variable]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Aggiungi 'this.' alla variabile non risolta.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Aggiungere 'this.' alla variabile non risolta]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add 'this.' to unresolved variable.]]></Val>
@@ -915,6 +915,9 @@
<Item ItemId=";Adding_a_tsconfig_json_file_will_help_organize_projects_that_contain_both_TypeScript_and_JavaScript__5068" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Adding a tsconfig.json file will help organize projects that contain both TypeScript and JavaScript files. Learn more at https://aka.ms/tsconfig.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Aggiungere un file tsconfig.json per organizzare più facilmente progetti che contengono sia file TypeScript che JavaScript. Per altre informazioni, vedere https://aka.ms/tsconfig.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -1057,7 +1060,7 @@
<Str Cat="Text">
<Val><![CDATA[An arithmetic operand must be of type 'any', 'number' or an enum type.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Un operando aritmetico deve essere di tipo 'any', 'number' o un tipo di enum.]]></Val>
<Val><![CDATA[Un operando aritmetico deve essere di tipo 'any', 'number' o un tipo di enumerazione.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -1102,7 +1105,7 @@
<Str Cat="Text">
<Val><![CDATA[An enum member cannot have a numeric name.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Il nome di un membro enum non può essere numerico.]]></Val>
<Val><![CDATA[Il nome di un membro di enumerazione non può essere numerico.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -1545,8 +1548,8 @@
<Item ItemId=";Call_decorator_expression_90028" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Call decorator expression]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Chiama l'espressione Decorator.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Chiamare l'espressione Decorator]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Call decorator expression.]]></Val>
@@ -1962,8 +1965,8 @@
<Item ItemId=";Change_0_to_1_90014" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Change '{0}' to '{1}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Cambia '{0}' in '{1}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Modificare '{0}' in '{1}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Change '{0}' to '{1}'.]]></Val>
@@ -1975,7 +1978,7 @@
<Str Cat="Text">
<Val><![CDATA[Change 'extends' to 'implements']]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Cambia 'extends' in 'implements']]></Val>
<Val><![CDATA[Cambiare 'extends' in 'implements']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Change 'extends' to 'implements'.]]></Val>
@@ -1986,8 +1989,8 @@
<Item ItemId=";Change_spelling_to_0_90022" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Change spelling to '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Modificare l'ortografia in '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Modificare l'ortografia in '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Change spelling to '{0}'.]]></Val>
@@ -2067,6 +2070,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclas_2720" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Class '{0}' incorrectly implements class '{1}'. Did you mean to extend '{1}' and inherit its members as a subclass?]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[La classe '{0}' implementa in modo errato la classe '{1}'. Si intendeva estendere '{1}' ed ereditarne i membri come sottoclasse?]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Class_0_incorrectly_implements_interface_1_2420" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Class '{0}' incorrectly implements interface '{1}'.]]></Val>
@@ -2155,7 +2167,7 @@
<Str Cat="Text">
<Val><![CDATA[Compile the project given the path to its configuration file, or to a folder with a 'tsconfig.json'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Compila il progetto di cui è stato specificato il percorso del file di configurazione o di una cartella contenente un file 'tsconfig.json'.]]></Val>
<Val><![CDATA[Compila il progetto in base al percorso del file di configurazione o della cartella contenente un file 'tsconfig.json'.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -2364,8 +2376,8 @@
<Item ItemId=";Declare_method_0_90023" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare method '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Dichiarare il metodo '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dichiarare il metodo '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare method '{0}'.]]></Val>
@@ -2376,8 +2388,8 @@
<Item ItemId=";Declare_property_0_90016" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Dichiarare la proprietà '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dichiarare la proprietà '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare property '{0}'.]]></Val>
@@ -2388,8 +2400,8 @@
<Item ItemId=";Declare_static_method_0_90024" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare static method '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Dichiarare il metodo statico '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dichiarare il metodo statico '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare static method '{0}'.]]></Val>
@@ -2400,8 +2412,8 @@
<Item ItemId=";Declare_static_property_0_90027" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare static property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Dichiarare la proprietà statica '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dichiarare la proprietà statica '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare static property '{0}'.]]></Val>
@@ -2484,8 +2496,8 @@
<Item ItemId=";Disable_checking_for_this_file_90018" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Disable checking for this file]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Disabilita la verifica per questo file.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Disabilitare la verifica per questo file]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Disable checking for this file.]]></Val>
@@ -2578,7 +2590,7 @@
<Str Cat="Text">
<Val><![CDATA[Do not erase const enum declarations in generated code.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Non cancella le dichiarazioni enum const nel codice generato.]]></Val>
<Val><![CDATA[Non cancella le dichiarazioni di enumerazione const nel codice generato.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -2824,7 +2836,7 @@
<Str Cat="Text">
<Val><![CDATA[Emit a single file with source maps instead of having a separate file.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Crea un unico file con i mapping d origine invece di file separati.]]></Val>
<Val><![CDATA[Crea un unico file con i mapping di origine invece di file separati.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -2851,7 +2863,7 @@
<Str Cat="Text">
<Val><![CDATA[Enable strict checking of function types.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Abilitare il controllo tassativo dei tipi funzione.]]></Val>
<Val><![CDATA[Abilita il controllo tassativo dei tipi funzione.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -2923,7 +2935,7 @@
<Str Cat="Text">
<Val><![CDATA[Enum declarations must all be const or non-const.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Le dichiarazioni enum devono essere tutte const o tutte non const.]]></Val>
<Val><![CDATA[Le dichiarazioni di enumerazione devono essere tutte const o tutte non const.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -2932,7 +2944,7 @@
<Str Cat="Text">
<Val><![CDATA[Enum member expected.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[È previsto il membro enum.]]></Val>
<Val><![CDATA[È previsto il membro di enumerazione.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -2941,7 +2953,7 @@
<Str Cat="Text">
<Val><![CDATA[Enum member must have initializer.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Il membro enum deve contenere l'inizializzatore.]]></Val>
<Val><![CDATA[Il membro di enumerazione deve contenere l'inizializzatore.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -3025,7 +3037,7 @@
<Str Cat="Text">
<Val><![CDATA[Expected {0} type arguments; provide these with an '@extends' tag.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Sono previsti argomento tipo {0}. Per specificarli, usare un tag '@extends'.]]></Val>
<Val><![CDATA[Sono previsti {0} argomenti tipo. Per specificarli, usare un tag '@extends'.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -3043,7 +3055,7 @@
<Str Cat="Text">
<Val><![CDATA[Expected at least {0} arguments, but got {1} or more.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Sono previsti almeno {0} argomenti, ma ne sono stati ottenuti più di {1}.]]></Val>
<Val><![CDATA[Sono previsti almeno {0} argomenti, ma ne sono stati ottenuti {1} o più.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -3453,15 +3465,6 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";File_specification_cannot_contain_multiple_recursive_directory_wildcards_Asterisk_Asterisk_Colon_0_5011" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[File specification cannot contain multiple recursive directory wildcards ('**'): '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[La specifica del file non può contenere più caratteri jolly ('**') di directory ricorsiva: '{0}'.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";File_specification_cannot_end_in_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0_5010" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[File specification cannot end in a recursive directory wildcard ('**'): '{0}'.]]></Val>
@@ -3756,8 +3759,8 @@
<Item ItemId=";Ignore_this_error_message_90019" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Ignore this error message]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Ignora questo messaggio di errore.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Ignorare questo messaggio di errore]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Ignore this error message.]]></Val>
@@ -3769,7 +3772,7 @@
<Str Cat="Text">
<Val><![CDATA[Implement inherited abstract class]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Implementa la classe astratta ereditata]]></Val>
<Val><![CDATA[Implementare la classe astratta ereditata]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Implement inherited abstract class.]]></Val>
@@ -3780,8 +3783,8 @@
<Item ItemId=";Implement_interface_0_90006" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Implement interface '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Implementa l'interfaccia '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Implementare l'interfaccia '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Implement interface '{0}'.]]></Val>
@@ -3801,8 +3804,8 @@
<Item ItemId=";Import_0_from_module_1_90013" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Import '{0}' from module "{1}"]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Importa '{0}' dal modulo "{1}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Importare '{0}' dal modulo "{1}"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Import '{0}' from module "{1}".]]></Val>
@@ -3892,7 +3895,7 @@
<Str Cat="Text">
<Val><![CDATA[In ambient enum declarations member initializer must be constant expression.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Nelle dichiarazioni enum dell'ambiente l'inizializzatore di membro deve essere un'espressione costante.]]></Val>
<Val><![CDATA[Nelle dichiarazioni di enumerazione dell'ambiente l'inizializzatore di membro deve essere un'espressione costante.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -3901,7 +3904,7 @@
<Str Cat="Text">
<Val><![CDATA[In an enum with multiple declarations, only one declaration can omit an initializer for its first enum element.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[In un'enumerazione con più dichiarazioni solo una di queste può omettere un inizializzatore per il primo elemento enum.]]></Val>
<Val><![CDATA[In un'enumerazione con più dichiarazioni solo una di queste può omettere un inizializzatore per il primo elemento dell'enumerazione.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -3910,7 +3913,7 @@
<Str Cat="Text">
<Val><![CDATA[In 'const' enum declarations member initializer must be constant expression.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Nelle dichiarazioni enum 'const' l'inizializzatore di membro deve essere un'espressione costante.]]></Val>
<Val><![CDATA[Nelle dichiarazioni di enumerazione 'const' l'inizializzatore di membro deve essere un'espressione costante.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -3954,8 +3957,8 @@
<Item ItemId=";Infer_parameter_types_from_usage_95012" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Infer parameter types from usage]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Deriva i tipi di parametro dall'utilizzo.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Derivare i tipi di parametro dall'utilizzo]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Infer parameter types from usage.]]></Val>
@@ -3966,8 +3969,8 @@
<Item ItemId=";Infer_type_of_0_from_usage_95011" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Infer type of '{0}' from usage]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Deriva il tipo di '{0}' dall'utilizzo.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Derivare il tipo di '{0}' dall'utilizzo]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Infer type of '{0}' from usage.]]></Val>
@@ -3978,8 +3981,8 @@
<Item ItemId=";Initialize_property_0_in_the_constructor_90020" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Initialize property '{0}' in the constructor]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Inizializza la proprietà '{0}' nel costruttore.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Inizializzare la proprietà '{0}' nel costruttore]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Initialize property '{0}' in the constructor.]]></Val>
@@ -3990,8 +3993,8 @@
<Item ItemId=";Initialize_static_property_0_90021" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Initialize static property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Inizializza la proprietà statica '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Inizializzare la proprietà statica '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Initialize static property '{0}'.]]></Val>
@@ -4527,8 +4530,8 @@
<Item ItemId=";Make_super_call_the_first_statement_in_the_constructor_90002" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Make 'super()' call the first statement in the constructor]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Imposta la chiamata a 'super()' come prima istruzione nel costruttore.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Impostare la chiamata a 'super()' come prima istruzione nel costruttore]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Make 'super()' call the first statement in the constructor.]]></Val>
@@ -4749,6 +4752,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Multiple_consecutive_numeric_separators_are_not_permitted_6189" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Multiple consecutive numeric separators are not permitted.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Non sono consentiti più separatori numerici consecutivi.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Multiple_constructor_implementations_are_not_allowed_2392" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Multiple constructor implementations are not allowed.]]></Val>
@@ -4839,6 +4851,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Numeric_separators_are_not_allowed_here_6188" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Numeric separators are not allowed here.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[I separatori numerici non sono consentiti in questa posizione.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Object_is_possibly_null_2531" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Object is possibly 'null'.]]></Val>
@@ -5445,8 +5466,8 @@
<Item ItemId=";Prefix_0_with_an_underscore_90025" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Prefix '{0}' with an underscore]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Anteporre un carattere di sottolineatura a '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Anteporre un carattere di sottolineatura a '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Prefix '{0}' with an underscore.]]></Val>
@@ -5901,8 +5922,8 @@
<Item ItemId=";Remove_declaration_for_Colon_0_90004" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Remove declaration for: '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Rimuovi la dichiarazione per {0}.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Rimuovere la dichiarazione per '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Remove declaration for: '{0}'.]]></Val>
@@ -6277,7 +6298,7 @@
<Str Cat="Text">
<Val><![CDATA[Return type of public static getter '{0}' from exported class has or is using private name '{1}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Il tipo restituito del getter di proprietà pubblico '{0}' della classe esportata contiene o usa il nome privato '{1}'.]]></Val>
<Val><![CDATA[Il tipo restituito del getter statico pubblico '{0}' della classe esportata contiene o usa il nome privato '{1}'.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -6330,8 +6351,8 @@
<Item ItemId=";Rewrite_as_the_indexed_access_type_0_90026" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Rewrite as the indexed access type '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Riscrivere come tipo di accesso indicizzato '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Riscrivere come tipo di accesso indicizzato '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Rewrite as the indexed access type '{0}'.]]></Val>
@@ -6450,6 +6471,9 @@
<Item ItemId=";Specify_ECMAScript_target_version_Colon_ES3_default_ES5_ES2015_ES2016_ES2017_ES2018_or_ESNEXT_6015" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Specificare la versione di destinazione di ECMAScript: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018' o 'ESNEXT'.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -6558,6 +6582,9 @@
<Item ItemId=";Starting_compilation_in_watch_mode_6031" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Starting compilation in watch mode...]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Avvio della compilazione in modalità espressione di controllo...]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -7123,7 +7150,7 @@
<Str Cat="Text">
<Val><![CDATA[The target of an object rest assignment must be a variable or a property access.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[La destinazione di un'assegnazione rimanente dell'oggetto deve essere una variabile o un accesso a proprietà.]]></Val>
<Val><![CDATA[La destinazione di un'assegnazione REST di oggetto deve essere una variabile o un accesso a proprietà.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -7413,6 +7440,9 @@
<Item ItemId=";Type_0_is_not_assignable_to_type_1_Two_different_types_with_this_name_exist_but_they_are_unrelated_2719" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Type '{0}' is not assignable to type '{1}'. Two different types with this name exist, but they are unrelated.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Il tipo '{0}' non è assegnabile al tipo '{1}'. Sono presenti due tipi diversi con questo nome, che però non sono correlati.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -8452,7 +8482,7 @@
<Str Cat="Text">
<Val><![CDATA['const' enum member initializer was evaluated to a non-finite value.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[L'inizializzatore di membro enum 'const' è stato valutato come valore non finito.]]></Val>
<Val><![CDATA[L'inizializzatore del membro di enumerazione 'const' è stato valutato come valore non finito.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -8461,7 +8491,7 @@
<Str Cat="Text">
<Val><![CDATA['const' enum member initializer was evaluated to disallowed value 'NaN'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[L'inizializzatore di membro enum 'const' è stato valutato come valore non consentito 'NaN'.]]></Val>
<Val><![CDATA[L'inizializzatore del membro di enumerazione 'const' è stato valutato come valore non consentito 'NaN'.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
File diff suppressed because it is too large Load Diff
@@ -337,7 +337,7 @@
<Str Cat="Text">
<Val><![CDATA[A dynamic import call returns a 'Promise'. Make sure you have a declaration for 'Promise' or include 'ES2015' in your `--lib` option.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[동적 가져오기 호출은 'Promise'를 반환해야 합니다. 'Promise'에 대한 선언이 있거나 `--lib` 옵션에 'ES2015'가 포함되었는지 확인하세요.]]></Val>
<Val><![CDATA[동적 가져오기 호출은 'Promise'를 반환합니다. 'Promise'에 대한 선언이 있거나 `--lib` 옵션에 'ES2015'가 포함되었는지 확인하세요.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -867,8 +867,8 @@
<Item ItemId=";Add_0_to_existing_import_declaration_from_1_90015" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add '{0}' to existing import declaration from "{1}"]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA["{1}"에서 기존 가져오기 선언에 '{0}'을(를) 추가합니다.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA["{1}"에서 기존 가져오기 선언에 '{0}' 추가]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add '{0}' to existing import declaration from "{1}".]]></Val>
@@ -879,8 +879,8 @@
<Item ItemId=";Add_index_signature_for_property_0_90017" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add index signature for property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA['{0}' 속성에 대해 인덱스 시그니처 추가합니다.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA['{0}' 속성에 대해 인덱스 시그니처 추가]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add index signature for property '{0}'.]]></Val>
@@ -891,8 +891,8 @@
<Item ItemId=";Add_missing_super_call_90001" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add missing 'super()' call]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[누락된 'super()' 호출 추가하세요.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[누락된 'super()' 호출 추가]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add missing 'super()' call.]]></Val>
@@ -903,8 +903,8 @@
<Item ItemId=";Add_this_to_unresolved_variable_90008" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add 'this.' to unresolved variable]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[확인되지 않은 변수에 'this.' 추가하세요.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[확인되지 않은 변수에 'this.' 추가]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add 'this.' to unresolved variable.]]></Val>
@@ -915,6 +915,9 @@
<Item ItemId=";Adding_a_tsconfig_json_file_will_help_organize_projects_that_contain_both_TypeScript_and_JavaScript__5068" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Adding a tsconfig.json file will help organize projects that contain both TypeScript and JavaScript files. Learn more at https://aka.ms/tsconfig.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[tsconfig.json 파일을 추가하면 TypeScript 파일과 JavaScript 파일이 둘 다 포함된 프로젝트를 정리하는 데 도움이 됩니다. 자세한 내용은 https://aka.ms/tsconfig를 참조하세요.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -1545,8 +1548,8 @@
<Item ItemId=";Call_decorator_expression_90028" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Call decorator expression]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[decorator 호출합니다.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[데코레이터 식 호출]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Call decorator expression.]]></Val>
@@ -1962,8 +1965,8 @@
<Item ItemId=";Change_0_to_1_90014" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Change '{0}' to '{1}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA['{0}'을(를) '{1}'(으)로 변경합니다.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA['{0}'을(를) '{1}'(으)로 변경]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Change '{0}' to '{1}'.]]></Val>
@@ -1986,8 +1989,8 @@
<Item ItemId=";Change_spelling_to_0_90022" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Change spelling to '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[철자를 '{0}'(으)로 변경하세요.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[맞춤법을 '{0}'(으)로 변경]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Change spelling to '{0}'.]]></Val>
@@ -2067,6 +2070,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclas_2720" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Class '{0}' incorrectly implements class '{1}'. Did you mean to extend '{1}' and inherit its members as a subclass?]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA['{0}' 클래스가 '{1}' 클래스를 잘못 구현합니다. '{1}'을(를) 확장하고 이 클래스의 멤버를 하위 클래스로 상속하시겠습니까?]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Class_0_incorrectly_implements_interface_1_2420" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Class '{0}' incorrectly implements interface '{1}'.]]></Val>
@@ -2364,8 +2376,8 @@
<Item ItemId=";Declare_method_0_90023" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare method '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA['{0}' 메서드 선언합니다.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA['{0}' 메서드 선언]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare method '{0}'.]]></Val>
@@ -2376,8 +2388,8 @@
<Item ItemId=";Declare_property_0_90016" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA['{0}' 속성 선언합니다.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA['{0}' 속성 선언]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare property '{0}'.]]></Val>
@@ -2388,8 +2400,8 @@
<Item ItemId=";Declare_static_method_0_90024" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare static method '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA['{0}' 정적 메서드 선언합니다.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA['{0}' 정적 메서드 선언]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare static method '{0}'.]]></Val>
@@ -2400,8 +2412,8 @@
<Item ItemId=";Declare_static_property_0_90027" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare static property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[정적 속성 '{0}'을(를) 선언합니다.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA['{0}' 정적 속성 선언]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare static property '{0}'.]]></Val>
@@ -2484,8 +2496,8 @@
<Item ItemId=";Disable_checking_for_this_file_90018" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Disable checking for this file]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[이 파일 확인을 사용하지 않도록 설정합니다.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[이 파일 확인을 사용하지 않도록 설정]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Disable checking for this file.]]></Val>
@@ -2788,7 +2800,7 @@
<Str Cat="Text">
<Val><![CDATA[Dynamic import's specifier must be of type 'string', but here has type '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[동적 가져오기의 지정자는 'string' 형식이어야 하지만 여기에 '{0}' 형식이 있습니다.]]></Val>
<Val><![CDATA[동적 가져오기의 지정자는 'string' 형식이어야 하지만 여기에서 형식은 '{0}'니다.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -2860,7 +2872,7 @@
<Str Cat="Text">
<Val><![CDATA[Enable strict checking of property initialization in classes.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[클래스의 속성 초기화에 대해 엄격한 검사를 사용합니다.]]></Val>
<Val><![CDATA[클래스의 속성 초기화에 대해 엄격한 검사를 사용하도록 설정합니다.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -3106,7 +3118,7 @@
<Str Cat="Text">
<Val><![CDATA[Export assignment cannot be used when targeting ECMAScript modules. Consider using 'export default' or another module format instead.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[ECMAScript 모듈을 대상으로 하는 경우 할당 내보내기 사용할 수 없습니다. 대신 'export default'나 다른 모듈 형식 사용을 고려하세요.]]></Val>
<Val><![CDATA[ECMAScript 모듈을 대상으로 하는 경우 내보내기 할당을 사용할 수 없습니다. 대신 'export default'나 다른 모듈 형식 사용을 고려하세요.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -3199,7 +3211,7 @@
<Str Cat="Text">
<Val><![CDATA[Exports and export assignments are not permitted in module augmentations.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[내보내기 및 할당 내보내기는 모듈 확대에서 허용되지 않습니다.]]></Val>
<Val><![CDATA[내보내기 및 내보내기 할당는 모듈 확대에서 허용되지 않습니다.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -3453,15 +3465,6 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";File_specification_cannot_contain_multiple_recursive_directory_wildcards_Asterisk_Asterisk_Colon_0_5011" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[File specification cannot contain multiple recursive directory wildcards ('**'): '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[파일 사양은 여러 개의 재귀 디렉터리 와일드카드('**')를 포함할 수 없습니다. '{0}'.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";File_specification_cannot_end_in_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0_5010" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[File specification cannot end in a recursive directory wildcard ('**'): '{0}'.]]></Val>
@@ -3756,8 +3759,8 @@
<Item ItemId=";Ignore_this_error_message_90019" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Ignore this error message]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[이 오류 메시지 무시합니다.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[이 오류 메시지 무시]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Ignore this error message.]]></Val>
@@ -3780,8 +3783,8 @@
<Item ItemId=";Implement_interface_0_90006" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Implement interface '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA['{0}' 인터페이스 구현하세요.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA['{0}' 인터페이스 구현]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Implement interface '{0}'.]]></Val>
@@ -3801,8 +3804,8 @@
<Item ItemId=";Import_0_from_module_1_90013" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Import '{0}' from module "{1}"]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA["{1}" 모듈에서 '{0}'을(를) 가져옵니다.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA["{1}" 모듈에서 '{0}' 가져오기]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Import '{0}' from module "{1}".]]></Val>
@@ -3954,8 +3957,8 @@
<Item ItemId=";Infer_parameter_types_from_usage_95012" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Infer parameter types from usage]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[사용량에서 매개 변수 형식 유추합니다.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[사용량에서 매개 변수 형식 유추]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Infer parameter types from usage.]]></Val>
@@ -3966,8 +3969,8 @@
<Item ItemId=";Infer_type_of_0_from_usage_95011" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Infer type of '{0}' from usage]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[사용량에서 '{0}'의 형식 유추합니다.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[사용량에서 '{0}'의 형식 유추]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Infer type of '{0}' from usage.]]></Val>
@@ -3978,8 +3981,8 @@
<Item ItemId=";Initialize_property_0_in_the_constructor_90020" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Initialize property '{0}' in the constructor]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[생성자에서 속성 '{0}'을(를) 초기화합니다.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[생성자에서 속성 '{0}' 초기화]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Initialize property '{0}' in the constructor.]]></Val>
@@ -3990,8 +3993,8 @@
<Item ItemId=";Initialize_static_property_0_90021" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Initialize static property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[정적 속성 '{0}'을(를) 초기화합니다.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[정적 속성 '{0}' 초기화]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Initialize static property '{0}'.]]></Val>
@@ -4486,7 +4489,7 @@
<Str Cat="Text">
<Val><![CDATA[Loading module as file / folder, candidate module location '{0}', target file type '{1}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[모듈을 파일/폴더로 로드하고 있습니다. 후보 모듈 위치: '{0}', 대상 파일 형식: '{1}'.]]></Val>
<Val><![CDATA[모듈을 파일/폴더로 로드하고 있습니다. 후보 모듈 위치 '{0}', 대상 파일 형식 '{1}'입니다.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -4527,8 +4530,8 @@
<Item ItemId=";Make_super_call_the_first_statement_in_the_constructor_90002" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Make 'super()' call the first statement in the constructor]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[생성자의 첫 번째 문을 'super()'로 호출하세요.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[생성자의 첫 번째 문을 'super()'로 호출]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Make 'super()' call the first statement in the constructor.]]></Val>
@@ -4749,6 +4752,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Multiple_consecutive_numeric_separators_are_not_permitted_6189" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Multiple consecutive numeric separators are not permitted.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[여러 개의 연속된 숫자 구분 기호는 허용되지 않습니다.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Multiple_constructor_implementations_are_not_allowed_2392" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Multiple constructor implementations are not allowed.]]></Val>
@@ -4839,6 +4851,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Numeric_separators_are_not_allowed_here_6188" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Numeric separators are not allowed here.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[숫자 구분 기호는 여기에서 허용되지 않습니다.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Object_is_possibly_null_2531" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Object is possibly 'null'.]]></Val>
@@ -5445,8 +5466,8 @@
<Item ItemId=";Prefix_0_with_an_underscore_90025" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Prefix '{0}' with an underscore]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA['{0}' 앞에 밑줄을 붙이세요.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA['{0}' 앞에 밑줄 추가]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Prefix '{0}' with an underscore.]]></Val>
@@ -5901,8 +5922,8 @@
<Item ItemId=";Remove_declaration_for_Colon_0_90004" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Remove declaration for: '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA['{0}'에 대한 선언 제거합니다.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA['{0}'에 대한 선언 제거]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Remove declaration for: '{0}'.]]></Val>
@@ -6330,8 +6351,8 @@
<Item ItemId=";Rewrite_as_the_indexed_access_type_0_90026" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Rewrite as the indexed access type '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[인덱싱된 액세스 형식 '{0}'(으)로 다시 작성하세요.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[인덱싱된 액세스 형식 '{0}'(으)로 다시 작성]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Rewrite as the indexed access type '{0}'.]]></Val>
@@ -6450,6 +6471,9 @@
<Item ItemId=";Specify_ECMAScript_target_version_Colon_ES3_default_ES5_ES2015_ES2016_ES2017_ES2018_or_ESNEXT_6015" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[ECMAScript 대상 버전을 'ES3'(기본값), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018' 또는 'ESNEXT'로 지정합니다.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -6558,6 +6582,9 @@
<Item ItemId=";Starting_compilation_in_watch_mode_6031" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Starting compilation in watch mode...]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[감시 모드에서 컴파일을 시작하는 중...]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -7413,6 +7440,9 @@
<Item ItemId=";Type_0_is_not_assignable_to_type_1_Two_different_types_with_this_name_exist_but_they_are_unrelated_2719" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Type '{0}' is not assignable to type '{1}'. Two different types with this name exist, but they are unrelated.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA['{0}' 형식을 '{1}' 형식에 할당할 수 없습니다. 이름이 같은 2개의 서로 다른 형식이 있지만 서로 관련은 없습니다.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -857,8 +857,8 @@
<Item ItemId=";Add_0_to_existing_import_declaration_from_1_90015" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add '{0}' to existing import declaration from "{1}"]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Dodaj element „{0}” do istniejącej deklaracji importu z elementu „{1}”.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dodaj element „{0}” do istniejącej deklaracji importu z elementu „{1}”]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add '{0}' to existing import declaration from "{1}".]]></Val>
@@ -869,8 +869,8 @@
<Item ItemId=";Add_index_signature_for_property_0_90017" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add index signature for property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Dodaj sygnaturę indeksu dla właściwości „{0}”.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dodaj sygnaturę indeksu dla właściwości „{0}”]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add index signature for property '{0}'.]]></Val>
@@ -881,8 +881,8 @@
<Item ItemId=";Add_missing_super_call_90001" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add missing 'super()' call]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Dodaj brakujące wywołanie „super()”.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dodaj brakujące wywołanie „super()”]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add missing 'super()' call.]]></Val>
@@ -893,8 +893,8 @@
<Item ItemId=";Add_this_to_unresolved_variable_90008" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add 'this.' to unresolved variable]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Dodaj „this.” do nierozpoznanej zmiennej.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dodaj „this.” do nierozpoznanej zmiennej]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add 'this.' to unresolved variable.]]></Val>
@@ -905,6 +905,9 @@
<Item ItemId=";Adding_a_tsconfig_json_file_will_help_organize_projects_that_contain_both_TypeScript_and_JavaScript__5068" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Adding a tsconfig.json file will help organize projects that contain both TypeScript and JavaScript files. Learn more at https://aka.ms/tsconfig.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dodanie pliku tsconfig.json pomoże w organizowaniu projektów, które zawierają pliki TypeScript i JavaScript. Dowiedz się więcej: https://aka.ms/tsconfig.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -1371,7 +1374,7 @@
<Str Cat="Text">
<Val><![CDATA[Annotate with type from JSDoc]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dodaj adnotację przy użyciu typu z JSDoc]]></Val>
<Val><![CDATA[Dodaj adnotację z typem z danych JSDoc]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -1380,7 +1383,7 @@
<Str Cat="Text">
<Val><![CDATA[Annotate with types from JSDoc]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dodaj adnotację przy użyciu typów z JSDoc]]></Val>
<Val><![CDATA[Dodaj adnotację z typami z danych JSDoc]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -1535,8 +1538,8 @@
<Item ItemId=";Call_decorator_expression_90028" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Call decorator expression]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Wywołaj wyrażenie dekoratora.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Wywołaj wyrażenie dekoratora]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Call decorator expression.]]></Val>
@@ -1952,8 +1955,8 @@
<Item ItemId=";Change_0_to_1_90014" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Change '{0}' to '{1}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Zmień element „{0}” na „{1}”.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Zmień element „{0}” na „{1}”]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Change '{0}' to '{1}'.]]></Val>
@@ -1976,8 +1979,8 @@
<Item ItemId=";Change_spelling_to_0_90022" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Change spelling to '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Zmiana pisowni na „{0}”.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Zmi pisownię na „{0}”]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Change spelling to '{0}'.]]></Val>
@@ -2057,6 +2060,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclas_2720" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Class '{0}' incorrectly implements class '{1}'. Did you mean to extend '{1}' and inherit its members as a subclass?]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Klasa „{0}” niepoprawnie implementuje klasę „{1}”. Czy chodziło o rozszerzenie „{1}” i odziedziczenie jego elementów członkowskich jako podklasy?]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Class_0_incorrectly_implements_interface_1_2420" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Class '{0}' incorrectly implements interface '{1}'.]]></Val>
@@ -2354,8 +2366,8 @@
<Item ItemId=";Declare_method_0_90023" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare method '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Zadeklaruj metodę „{0}”.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Zadeklaruj metodę „{0}”]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare method '{0}'.]]></Val>
@@ -2366,8 +2378,8 @@
<Item ItemId=";Declare_property_0_90016" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Zadeklaruj właściwość „{0}”.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Zadeklaruj właściwość „{0}”]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare property '{0}'.]]></Val>
@@ -2378,8 +2390,8 @@
<Item ItemId=";Declare_static_method_0_90024" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare static method '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Zadeklaruj metodę statyczną „{0}”.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Zadeklaruj metodę statyczną „{0}”]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare static method '{0}'.]]></Val>
@@ -2390,8 +2402,8 @@
<Item ItemId=";Declare_static_property_0_90027" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare static property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Zadeklaruj właściwość statyczną „{0}”.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Zadeklaruj właściwość statyczną „{0}”]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare static property '{0}'.]]></Val>
@@ -2474,8 +2486,8 @@
<Item ItemId=";Disable_checking_for_this_file_90018" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Disable checking for this file]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Wyłącz sprawdzanie dla tego pliku.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Wyłącz sprawdzanie dla tego pliku]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Disable checking for this file.]]></Val>
@@ -3443,15 +3455,6 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";File_specification_cannot_contain_multiple_recursive_directory_wildcards_Asterisk_Asterisk_Colon_0_5011" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[File specification cannot contain multiple recursive directory wildcards ('**'): '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Specyfikacja pliku nie może zawierać wielu cyklicznych symboli wieloznacznych katalogu („**”): „{0}”.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";File_specification_cannot_end_in_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0_5010" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[File specification cannot end in a recursive directory wildcard ('**'): '{0}'.]]></Val>
@@ -3746,8 +3749,8 @@
<Item ItemId=";Ignore_this_error_message_90019" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Ignore this error message]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Ignoruj ten komunikat o błędzie.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Ignoruj ten komunikat o błędzie]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Ignore this error message.]]></Val>
@@ -3770,8 +3773,8 @@
<Item ItemId=";Implement_interface_0_90006" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Implement interface '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Implementuj interfejs „{0}”.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Implementuj interfejs „{0}”]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Implement interface '{0}'.]]></Val>
@@ -3791,8 +3794,8 @@
<Item ItemId=";Import_0_from_module_1_90013" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Import '{0}' from module "{1}"]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Import „{0}” z modułu „{1}”.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Importuj element „{0}” z modułu „{1}”]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Import '{0}' from module "{1}".]]></Val>
@@ -3944,8 +3947,8 @@
<Item ItemId=";Infer_parameter_types_from_usage_95012" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Infer parameter types from usage]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Wywnioskuj typy parametrów na podstawie użycia.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Wnioskuj typy parametrów na podstawie użycia]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Infer parameter types from usage.]]></Val>
@@ -3956,8 +3959,8 @@
<Item ItemId=";Infer_type_of_0_from_usage_95011" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Infer type of '{0}' from usage]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Wywnioskuj typ elementu „{0}” na podstawie użycia.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Wnioskuj typ elementu „{0}” na podstawie użycia]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Infer type of '{0}' from usage.]]></Val>
@@ -3968,8 +3971,8 @@
<Item ItemId=";Initialize_property_0_in_the_constructor_90020" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Initialize property '{0}' in the constructor]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Zainicjuj właściwość „{0}” w konstruktorze.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Zainicjuj właściwość „{0}” w konstruktorze]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Initialize property '{0}' in the constructor.]]></Val>
@@ -3980,8 +3983,8 @@
<Item ItemId=";Initialize_static_property_0_90021" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Initialize static property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Zainicjuj właściwość statyczną „{0}”.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Zainicjuj właściwość statyczną „{0}”]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Initialize static property '{0}'.]]></Val>
@@ -4517,8 +4520,8 @@
<Item ItemId=";Make_super_call_the_first_statement_in_the_constructor_90002" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Make 'super()' call the first statement in the constructor]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Ustaw wywołanie „super()” jako pierwszą instrukcję w konstruktorze.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Ustaw wywołanie „super()” jako pierwszą instrukcję w konstruktorze]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Make 'super()' call the first statement in the constructor.]]></Val>
@@ -4739,6 +4742,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Multiple_consecutive_numeric_separators_are_not_permitted_6189" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Multiple consecutive numeric separators are not permitted.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Kolejne następujące po sobie separatory liczbowe nie są dozwolone.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Multiple_constructor_implementations_are_not_allowed_2392" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Multiple constructor implementations are not allowed.]]></Val>
@@ -4829,6 +4841,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Numeric_separators_are_not_allowed_here_6188" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Numeric separators are not allowed here.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Separatory liczbowe nie są dozwolone w tym miejscu.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Object_is_possibly_null_2531" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Object is possibly 'null'.]]></Val>
@@ -5432,8 +5453,8 @@
<Item ItemId=";Prefix_0_with_an_underscore_90025" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Prefix '{0}' with an underscore]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Prefiks „{0}” z podkreśleniem.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Poprzedzaj elementy „{0}” znakiem podkreślenia]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Prefix '{0}' with an underscore.]]></Val>
@@ -5888,8 +5909,8 @@
<Item ItemId=";Remove_declaration_for_Colon_0_90004" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Remove declaration for: '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Usuń deklarację dla: „{0}”.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Usuń deklarację dla: „{0}”]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Remove declaration for: '{0}'.]]></Val>
@@ -6314,8 +6335,8 @@
<Item ItemId=";Rewrite_as_the_indexed_access_type_0_90026" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Rewrite as the indexed access type '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Zapisz ponownie jako typ dostępu indeksowanego „{0}”.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Napisz ponownie jako indeksowany typ dostępu „{0}”]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Rewrite as the indexed access type '{0}'.]]></Val>
@@ -6434,6 +6455,9 @@
<Item ItemId=";Specify_ECMAScript_target_version_Colon_ES3_default_ES5_ES2015_ES2016_ES2017_ES2018_or_ESNEXT_6015" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Podaj wersję docelową języka ECMAScript: „ES3” (domyślna), „ES5”, „ES2015”, „ES2016”, „ES2017”, „ES2018” lub „ESNEXT”.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -6542,6 +6566,9 @@
<Item ItemId=";Starting_compilation_in_watch_mode_6031" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Starting compilation in watch mode...]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Trwa uruchamianie kompilacji w trybie śledzenia...]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -7397,6 +7424,9 @@
<Item ItemId=";Type_0_is_not_assignable_to_type_1_Two_different_types_with_this_name_exist_but_they_are_unrelated_2719" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Type '{0}' is not assignable to type '{1}'. Two different types with this name exist, but they are unrelated.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Typu „{0}” nie można przypisać do typu „{1}”. Istnieją dwa różne typy o tej nazwie, lecz są ze sobą niezwiązane.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -276,7 +276,7 @@
<Str Cat="Text">
<Val><![CDATA[A decorator can only decorate a method implementation, not an overload.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Um decorador pode decoras somente uma implementação de método, não uma sobrecarga.]]></Val>
<Val><![CDATA[Um decorador pode decorar somente uma implementação de método, não uma sobrecarga.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -411,7 +411,7 @@
<Str Cat="Text">
<Val><![CDATA[A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[O inicializador de um membro em uma declaração enum não pode referenciar membros declarados depois dele, inclusive membros definidos em outros enums.]]></Val>
<Val><![CDATA[O inicializador de um membro em uma declaração de enumeração não pode referenciar membros declarados depois dele, inclusive membros definidos em outras enumerações.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -857,8 +857,8 @@
<Item ItemId=";Add_0_to_existing_import_declaration_from_1_90015" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add '{0}' to existing import declaration from "{1}"]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Adicione "{0}" à declaração de importação existente de "{1}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Adicionar '{0}' à declaração de importação existente de "{1}"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add '{0}' to existing import declaration from "{1}".]]></Val>
@@ -869,8 +869,8 @@
<Item ItemId=";Add_index_signature_for_property_0_90017" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add index signature for property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Adicione assinatura de índice para a propriedade '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Adicionar assinatura de índice para a propriedade '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add index signature for property '{0}'.]]></Val>
@@ -881,8 +881,8 @@
<Item ItemId=";Add_missing_super_call_90001" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add missing 'super()' call]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Adicionar chamada 'super()' ausente.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Adicionar chamada 'super()' ausente]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add missing 'super()' call.]]></Val>
@@ -893,8 +893,8 @@
<Item ItemId=";Add_this_to_unresolved_variable_90008" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add 'this.' to unresolved variable]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Adicione 'this.' a uma variável não resolvida.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Adicionar 'this.' a uma variável não resolvida]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add 'this.' to unresolved variable.]]></Val>
@@ -905,6 +905,9 @@
<Item ItemId=";Adding_a_tsconfig_json_file_will_help_organize_projects_that_contain_both_TypeScript_and_JavaScript__5068" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Adding a tsconfig.json file will help organize projects that contain both TypeScript and JavaScript files. Learn more at https://aka.ms/tsconfig.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Adicionar um arquivo tsconfig.json ajudará a organizar projetos que contêm arquivos TypeScript e JavaScript. Saiba mais em https://aka.ms/tsconfig.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -1047,7 +1050,7 @@
<Str Cat="Text">
<Val><![CDATA[An arithmetic operand must be of type 'any', 'number' or an enum type.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Um operando aritmético deve ser do tipo 'any', 'number' ou um tipo enum.]]></Val>
<Val><![CDATA[Um operando aritmético deve ser do tipo 'any', 'number' ou um tipo de enumeração.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -1092,7 +1095,7 @@
<Str Cat="Text">
<Val><![CDATA[An enum member cannot have a numeric name.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Um membro enum não pode ter um nome numérico.]]></Val>
<Val><![CDATA[Um membro de enumeração não pode ter um nome numérico.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -1535,8 +1538,8 @@
<Item ItemId=";Call_decorator_expression_90028" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Call decorator expression]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Chamar expressão decoradora.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Chamar expressão do decorador]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Call decorator expression.]]></Val>
@@ -1952,8 +1955,8 @@
<Item ItemId=";Change_0_to_1_90014" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Change '{0}' to '{1}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Alterar '{0}' para '{1}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Alterar '{0}' para '{1}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Change '{0}' to '{1}'.]]></Val>
@@ -1976,8 +1979,8 @@
<Item ItemId=";Change_spelling_to_0_90022" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Change spelling to '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Alterar ortografia para '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Alterar ortografia para '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Change spelling to '{0}'.]]></Val>
@@ -2057,6 +2060,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclas_2720" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Class '{0}' incorrectly implements class '{1}'. Did you mean to extend '{1}' and inherit its members as a subclass?]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[A classe '{0}' implementa incorretamente a classe '{1}'. Você pretendia estender '{1}' e herdar seus membros como uma subclasse?]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Class_0_incorrectly_implements_interface_1_2420" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Class '{0}' incorrectly implements interface '{1}'.]]></Val>
@@ -2181,7 +2193,7 @@
<Str Cat="Text">
<Val><![CDATA[Computed values are not permitted in an enum with string valued members.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Os valores computados não são permitidos em um enum com membros de valor de cadeia de caracteres.]]></Val>
<Val><![CDATA[Os valores computados não são permitidos em uma enumeração com membros de valor de cadeia de caracteres.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -2354,8 +2366,8 @@
<Item ItemId=";Declare_method_0_90023" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare method '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Declare o método '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Declarar método '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare method '{0}'.]]></Val>
@@ -2366,8 +2378,8 @@
<Item ItemId=";Declare_property_0_90016" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Declare a propriedade '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Declarar propriedade '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare property '{0}'.]]></Val>
@@ -2378,8 +2390,8 @@
<Item ItemId=";Declare_static_method_0_90024" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare static method '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Declare o método estático '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Declarar método estático '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare static method '{0}'.]]></Val>
@@ -2390,8 +2402,8 @@
<Item ItemId=";Declare_static_property_0_90027" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare static property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Declare a propriedade estática "{0}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Declarar propriedade estática '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare static property '{0}'.]]></Val>
@@ -2474,8 +2486,8 @@
<Item ItemId=";Disable_checking_for_this_file_90018" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Disable checking for this file]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Desabilitar a verificação para esse arquivo.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Desabilitar a verificação para esse arquivo]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Disable checking for this file.]]></Val>
@@ -2904,7 +2916,7 @@
<Str Cat="Text">
<Val><![CDATA[Enum '{0}' used before its declaration.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Enum '{0}' usada antes de sua declaração.]]></Val>
<Val><![CDATA[A enumeração '{0}' usada antes de sua declaração.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -2913,7 +2925,7 @@
<Str Cat="Text">
<Val><![CDATA[Enum declarations must all be const or non-const.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Declarações enum devem ser const ou não const.]]></Val>
<Val><![CDATA[Declarações de enumeração devem ser const ou não const.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -2922,7 +2934,7 @@
<Str Cat="Text">
<Val><![CDATA[Enum member expected.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Membro enum esperado.]]></Val>
<Val><![CDATA[Membro de enumeração esperado.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -2931,7 +2943,7 @@
<Str Cat="Text">
<Val><![CDATA[Enum member must have initializer.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[O membro enum deve ter um inicializador.]]></Val>
<Val><![CDATA[O membro de enumeração deve ter um inicializador.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -2940,7 +2952,7 @@
<Str Cat="Text">
<Val><![CDATA[Enum name cannot be '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[O nome de enum não pode ser '{0}'.]]></Val>
<Val><![CDATA[O nome de enumeração não pode ser '{0}'.]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Enum name cannot be '{0}']]></Val>
@@ -2952,7 +2964,7 @@
<Str Cat="Text">
<Val><![CDATA[Enum type '{0}' has members with initializers that are not literals.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[O tipo Enum '{0}' tem membros com inicializadores que não são literais.]]></Val>
<Val><![CDATA[O tipo de Enumeração '{0}' tem membros com inicializadores que não são literais.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -3443,15 +3455,6 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";File_specification_cannot_contain_multiple_recursive_directory_wildcards_Asterisk_Asterisk_Colon_0_5011" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[File specification cannot contain multiple recursive directory wildcards ('**'): '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[A especificação de arquivo não pode conter vários curingas do diretório recursivo ('**'): '{0}'.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";File_specification_cannot_end_in_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0_5010" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[File specification cannot end in a recursive directory wildcard ('**'): '{0}'.]]></Val>
@@ -3746,8 +3749,8 @@
<Item ItemId=";Ignore_this_error_message_90019" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Ignore this error message]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Ignore essa mensagem de erro.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Ignorar essa mensagem de erro]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Ignore this error message.]]></Val>
@@ -3770,8 +3773,8 @@
<Item ItemId=";Implement_interface_0_90006" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Implement interface '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Implemente a interface '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Implementar a interface '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Implement interface '{0}'.]]></Val>
@@ -3791,8 +3794,8 @@
<Item ItemId=";Import_0_from_module_1_90013" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Import '{0}' from module "{1}"]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Importar '{0}' do módulo "{1}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Importar '{0}' do módulo "{1}"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Import '{0}' from module "{1}".]]></Val>
@@ -3882,7 +3885,7 @@
<Str Cat="Text">
<Val><![CDATA[In ambient enum declarations member initializer must be constant expression.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Em declarações enum de ambiente, o inicializador de membro deve ser uma expressão de constante.]]></Val>
<Val><![CDATA[Em declarações de enumeração de ambiente, o inicializador de membro deve ser uma expressão de constante.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -3891,7 +3894,7 @@
<Str Cat="Text">
<Val><![CDATA[In an enum with multiple declarations, only one declaration can omit an initializer for its first enum element.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Em um enum com várias declarações, somente uma declaração pode omitir um inicializador para o primeiro elemento enum.]]></Val>
<Val><![CDATA[Em uma enumeração com várias declarações, somente uma declaração pode omitir um inicializador para o primeiro elemento de enumeração.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -3944,8 +3947,8 @@
<Item ItemId=";Infer_parameter_types_from_usage_95012" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Infer parameter types from usage]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Inferir os tipos de parâmetro do uso.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Inferir tipos de parâmetro pelo uso]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Infer parameter types from usage.]]></Val>
@@ -3956,8 +3959,8 @@
<Item ItemId=";Infer_type_of_0_from_usage_95011" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Infer type of '{0}' from usage]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Inferir o tipo de '{0}' do uso.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Inferir tipo de '{0}' pelo uso]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Infer type of '{0}' from usage.]]></Val>
@@ -3968,8 +3971,8 @@
<Item ItemId=";Initialize_property_0_in_the_constructor_90020" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Initialize property '{0}' in the constructor]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Inicializar a propriedade '{0}' no construtor.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Inicializar a propriedade '{0}' no construtor]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Initialize property '{0}' in the constructor.]]></Val>
@@ -3980,8 +3983,8 @@
<Item ItemId=";Initialize_static_property_0_90021" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Initialize static property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Inicializar a propriedade estática '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Inicializar a propriedade estática '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Initialize static property '{0}'.]]></Val>
@@ -4517,8 +4520,8 @@
<Item ItemId=";Make_super_call_the_first_statement_in_the_constructor_90002" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Make 'super()' call the first statement in the constructor]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Tornar a chamada 'super()' a primeira instrução no construtor.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Tornar a chamada 'super()' a primeira instrução no construtor]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Make 'super()' call the first statement in the constructor.]]></Val>
@@ -4739,6 +4742,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Multiple_consecutive_numeric_separators_are_not_permitted_6189" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Multiple consecutive numeric separators are not permitted.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Não são permitidos vários separadores numéricos consecutivos.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Multiple_constructor_implementations_are_not_allowed_2392" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Multiple constructor implementations are not allowed.]]></Val>
@@ -4829,6 +4841,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Numeric_separators_are_not_allowed_here_6188" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Numeric separators are not allowed here.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Separadores numéricos não são permitidos aqui.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Object_is_possibly_null_2531" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Object is possibly 'null'.]]></Val>
@@ -5432,8 +5453,8 @@
<Item ItemId=";Prefix_0_with_an_underscore_90025" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Prefix '{0}' with an underscore]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Prefixo '{0}' com um sublinhado.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Prefixo '{0}' com um sublinhado]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Prefix '{0}' with an underscore.]]></Val>
@@ -5888,8 +5909,8 @@
<Item ItemId=";Remove_declaration_for_Colon_0_90004" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Remove declaration for: '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Remover declaração para: '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Remover declaração para: '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Remove declaration for: '{0}'.]]></Val>
@@ -6314,8 +6335,8 @@
<Item ItemId=";Rewrite_as_the_indexed_access_type_0_90026" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Rewrite as the indexed access type '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Regravar como o tipo de acesso indexado '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Reescrever como o tipo de acesso indexado '{0}']]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Rewrite as the indexed access type '{0}'.]]></Val>
@@ -6434,6 +6455,9 @@
<Item ItemId=";Specify_ECMAScript_target_version_Colon_ES3_default_ES5_ES2015_ES2016_ES2017_ES2018_or_ESNEXT_6015" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Especifique a versão de destino do ECMAScript: 'ES3' (padrão), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018' ou 'ESNEXT'.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -6542,6 +6566,9 @@
<Item ItemId=";Starting_compilation_in_watch_mode_6031" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Starting compilation in watch mode...]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Iniciando compilação no modo de inspeção...]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -6918,7 +6945,7 @@
<Str Cat="Text">
<Val><![CDATA[The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[O lado esquerdo de uma operação aritmética deve ser do tipo 'any', 'number' ou enum.]]></Val>
<Val><![CDATA[O lado esquerdo de uma operação aritmética deve ser do tipo 'any', 'number' ou de enumeração.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -7056,7 +7083,7 @@
<Str Cat="Text">
<Val><![CDATA[The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[O lado direito de uma operação aritmética deve ser do tipo 'any', 'number' ou enum.]]></Val>
<Val><![CDATA[O lado direito de uma operação aritmética deve ser do tipo 'any', 'number' ou de enumeração.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -7397,6 +7424,9 @@
<Item ItemId=";Type_0_is_not_assignable_to_type_1_Two_different_types_with_this_name_exist_but_they_are_unrelated_2719" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Type '{0}' is not assignable to type '{1}'. Two different types with this name exist, but they are unrelated.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[O tipo '{0}' não é atribuível ao tipo '{1}'. Dois tipos diferentes com esse nome existem, mas eles não estão relacionados.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -144,7 +144,7 @@
<Str Cat="Text">
<Val><![CDATA[A computed property name in a class property declaration must refer to an expression whose type is a literal type or a 'unique symbol' type.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Имя вычисляемого свойства в объявлении свойств класса должно ссылаться на выражение, тип которого — литерал или уникальный символ.]]></Val>
<Val><![CDATA[Имя вычисляемого свойства в объявлении свойств класса должно ссылаться на выражение, тип которого — литерал или "unique symbol".]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -153,7 +153,7 @@
<Str Cat="Text">
<Val><![CDATA[A computed property name in a method overload must refer to an expression whose type is a literal type or a 'unique symbol' type.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Имя вычисляемого свойства в перегрузке метода должно ссылаться на выражение, тип которого — литерал или уникальный символ.]]></Val>
<Val><![CDATA[Имя вычисляемого свойства в перегрузке метода должно ссылаться на выражение, тип которого — литерал или "unique symbol".]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -162,7 +162,7 @@
<Str Cat="Text">
<Val><![CDATA[A computed property name in a type literal must refer to an expression whose type is a literal type or a 'unique symbol' type.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Имя вычисляемого свойства в литерале должно ссылаться на выражение, тип которого — литерал или уникальный символ.]]></Val>
<Val><![CDATA[Имя вычисляемого свойства в литерале должно ссылаться на выражение, тип которого — литерал или "unique symbol".]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -171,7 +171,7 @@
<Str Cat="Text">
<Val><![CDATA[A computed property name in an ambient context must refer to an expression whose type is a literal type or a 'unique symbol' type.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Имя вычисляемого свойства в окружающем контексте должно ссылаться на выражение, тип которого — литерал или уникальный символ.]]></Val>
<Val><![CDATA[Имя вычисляемого свойства в окружающем контексте должно ссылаться на выражение, тип которого — литерал или "unique symbol".]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -180,7 +180,7 @@
<Str Cat="Text">
<Val><![CDATA[A computed property name in an interface must refer to an expression whose type is a literal type or a 'unique symbol' type.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Имя вычисляемого свойства в интерфейсе должно ссылаться на выражение, тип которого — литерал или уникальный символ.]]></Val>
<Val><![CDATA[Имя вычисляемого свойства в интерфейсе должно ссылаться на выражение, тип которого — литерал или "unique symbol".]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -531,7 +531,7 @@
<Str Cat="Text">
<Val><![CDATA[A property of a class whose type is a 'unique symbol' type must be both 'static' and 'readonly'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Свойство класса, тип которого — уникальный символ, должно быть задано как "static" и "readonly".]]></Val>
<Val><![CDATA[Свойство класса, тип которого — "unique symbol", должно быть задано как "static" и "readonly".]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -540,7 +540,7 @@
<Str Cat="Text">
<Val><![CDATA[A property of an interface or type literal whose type is a 'unique symbol' type must be 'readonly'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Свойство интерфейса или литерала, тип которого — уникальный символ, должно быть задано как "readonly".]]></Val>
<Val><![CDATA[Свойство интерфейса или литерала, тип которого — "unique symbol", должно быть задано как "readonly".]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -795,7 +795,7 @@
<Str Cat="Text">
<Val><![CDATA[A variable whose type is a 'unique symbol' type must be 'const'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Переменная типа "уникальный символ" должна быть задана как "const".]]></Val>
<Val><![CDATA[Переменная, тип которой — "unique symbol", должна быть задана как "const".]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -866,8 +866,8 @@
<Item ItemId=";Add_0_to_existing_import_declaration_from_1_90015" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add '{0}' to existing import declaration from "{1}"]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Добавьте "{0}" в существующее объявление импорта из "{1}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Добавьте "{0}" в существующее объявление импорта из "{1}"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add '{0}' to existing import declaration from "{1}".]]></Val>
@@ -878,8 +878,8 @@
<Item ItemId=";Add_index_signature_for_property_0_90017" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add index signature for property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Добавьте сигнатуру индекса для свойства "{0}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Добавьте сигнатуру индекса для свойства "{0}"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add index signature for property '{0}'.]]></Val>
@@ -890,8 +890,8 @@
<Item ItemId=";Add_missing_super_call_90001" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add missing 'super()' call]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Добавьте отсутствующий вызов "super()".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Добавьте отсутствующий вызов "super()"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add missing 'super()' call.]]></Val>
@@ -902,8 +902,8 @@
<Item ItemId=";Add_this_to_unresolved_variable_90008" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add 'this.' to unresolved variable]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Добавление "this." к неразрешенной переменной.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Добавьте "this." к неразрешенной переменной]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add 'this.' to unresolved variable.]]></Val>
@@ -914,6 +914,9 @@
<Item ItemId=";Adding_a_tsconfig_json_file_will_help_organize_projects_that_contain_both_TypeScript_and_JavaScript__5068" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Adding a tsconfig.json file will help organize projects that contain both TypeScript and JavaScript files. Learn more at https://aka.ms/tsconfig.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Добавление файла tsconfig.json поможет организовать проекты, содержащие файлы TypeScript и JavaScript. Дополнительные сведения: https://aka.ms/tsconfig.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -1544,8 +1547,8 @@
<Item ItemId=";Call_decorator_expression_90028" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Call decorator expression]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Вызов выражения-декоратора.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Вызовите выражение декоратора]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Call decorator expression.]]></Val>
@@ -1961,8 +1964,8 @@
<Item ItemId=";Change_0_to_1_90014" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Change '{0}' to '{1}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Замена "{0}" на "{1}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Измените "{0}" на "{1}"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Change '{0}' to '{1}'.]]></Val>
@@ -1985,8 +1988,8 @@
<Item ItemId=";Change_spelling_to_0_90022" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Change spelling to '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Изменить правописание на "{0}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Измените написание на "{0}"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Change spelling to '{0}'.]]></Val>
@@ -2066,6 +2069,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclas_2720" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Class '{0}' incorrectly implements class '{1}'. Did you mean to extend '{1}' and inherit its members as a subclass?]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Класс "{0}" неправильно реализует класс "{1}". Вы хотели расширить "{1}" и унаследовать его члены в виде подкласса?]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Class_0_incorrectly_implements_interface_1_2420" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Class '{0}' incorrectly implements interface '{1}'.]]></Val>
@@ -2363,8 +2375,8 @@
<Item ItemId=";Declare_method_0_90023" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare method '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Объявите метод "{0}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Объявите метод "{0}"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare method '{0}'.]]></Val>
@@ -2375,8 +2387,8 @@
<Item ItemId=";Declare_property_0_90016" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Объявите свойство "{0}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Объявите свойство "{0}"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare property '{0}'.]]></Val>
@@ -2387,8 +2399,8 @@
<Item ItemId=";Declare_static_method_0_90024" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare static method '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Объявите статический метод "{0}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Объявите статический метод "{0}"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare static method '{0}'.]]></Val>
@@ -2399,8 +2411,8 @@
<Item ItemId=";Declare_static_property_0_90027" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare static property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Объявление статического свойства "{0}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Объявите статическое свойство "{0}"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare static property '{0}'.]]></Val>
@@ -2483,8 +2495,8 @@
<Item ItemId=";Disable_checking_for_this_file_90018" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Disable checking for this file]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Отключить проверку для этого файла.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Отключите проверку для этого файла]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Disable checking for this file.]]></Val>
@@ -3033,7 +3045,7 @@
<Str Cat="Text">
<Val><![CDATA[Expected at least {0} arguments, but got {1}.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Ожидалось аргументов не менее: {0}, получено: {1}.]]></Val>
<Val><![CDATA[Ожидалось аргументов не меньше: {0}, получено: {1}.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -3452,15 +3464,6 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";File_specification_cannot_contain_multiple_recursive_directory_wildcards_Asterisk_Asterisk_Colon_0_5011" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[File specification cannot contain multiple recursive directory wildcards ('**'): '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Спецификация файла не может содержать несколько рекурсивных подстановочных знаков каталога ("**"): "{0}".]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";File_specification_cannot_end_in_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0_5010" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[File specification cannot end in a recursive directory wildcard ('**'): '{0}'.]]></Val>
@@ -3755,8 +3758,8 @@
<Item ItemId=";Ignore_this_error_message_90019" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Ignore this error message]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Пропустить это сообщение об ошибке.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Пропустите это сообщение об ошибке]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Ignore this error message.]]></Val>
@@ -3779,8 +3782,8 @@
<Item ItemId=";Implement_interface_0_90006" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Implement interface '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Реализуйте интерфейс "{0}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Реализуйте интерфейс "{0}"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Implement interface '{0}'.]]></Val>
@@ -3800,8 +3803,8 @@
<Item ItemId=";Import_0_from_module_1_90013" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Import '{0}' from module "{1}"]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Импорт "{0}" из модуля "{1}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Импортируйте "{0}" из модуля "{1}"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Import '{0}' from module "{1}".]]></Val>
@@ -3953,8 +3956,8 @@
<Item ItemId=";Infer_parameter_types_from_usage_95012" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Infer parameter types from usage]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Вывод типов параметров на основе использования.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Выведите типы параметров на основании их использования]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Infer parameter types from usage.]]></Val>
@@ -3965,8 +3968,8 @@
<Item ItemId=";Infer_type_of_0_from_usage_95011" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Infer type of '{0}' from usage]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Вывод типа "{0}" на основе использования.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Выведите тип "{0}" на основании его использования]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Infer type of '{0}' from usage.]]></Val>
@@ -3977,8 +3980,8 @@
<Item ItemId=";Initialize_property_0_in_the_constructor_90020" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Initialize property '{0}' in the constructor]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Инициализировать свойство "{0}" в конструкторе.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Инициализируйте свойство "{0}" в конструкторе]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Initialize property '{0}' in the constructor.]]></Val>
@@ -3989,8 +3992,8 @@
<Item ItemId=";Initialize_static_property_0_90021" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Initialize static property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Инициализировать статическое свойство "{0}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Инициализируйте статическое свойство "{0}"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Initialize static property '{0}'.]]></Val>
@@ -4526,8 +4529,8 @@
<Item ItemId=";Make_super_call_the_first_statement_in_the_constructor_90002" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Make 'super()' call the first statement in the constructor]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Сделайте вызов "super()" первой инструкцией в конструкторе.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Сделайте вызов "super()" первой инструкцией в конструкторе]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Make 'super()' call the first statement in the constructor.]]></Val>
@@ -4748,6 +4751,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Multiple_consecutive_numeric_separators_are_not_permitted_6189" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Multiple consecutive numeric separators are not permitted.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Использовать несколько последовательных числовых разделителей запрещено.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Multiple_constructor_implementations_are_not_allowed_2392" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Multiple constructor implementations are not allowed.]]></Val>
@@ -4838,6 +4850,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Numeric_separators_are_not_allowed_here_6188" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Numeric separators are not allowed here.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Числовые разделители здесь запрещены.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Object_is_possibly_null_2531" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Object is possibly 'null'.]]></Val>
@@ -5444,8 +5465,8 @@
<Item ItemId=";Prefix_0_with_an_underscore_90025" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Prefix '{0}' with an underscore]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Добавьте к "{0}" префикс — символ подчеркивания.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Добавьте к "{0}" префикс — символ подчеркивания]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Prefix '{0}' with an underscore.]]></Val>
@@ -5900,8 +5921,8 @@
<Item ItemId=";Remove_declaration_for_Colon_0_90004" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Remove declaration for: '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Удалите объявление: "{0}".]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Удалите объявление: "{0}"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Remove declaration for: '{0}'.]]></Val>
@@ -6329,8 +6350,8 @@
<Item ItemId=";Rewrite_as_the_indexed_access_type_0_90026" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Rewrite as the indexed access type '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Необходима перезапись с типом индексного доступа {0}.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Перезапишите как тип с индексным доступом "{0}"]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Rewrite as the indexed access type '{0}'.]]></Val>
@@ -6449,6 +6470,9 @@
<Item ItemId=";Specify_ECMAScript_target_version_Colon_ES3_default_ES5_ES2015_ES2016_ES2017_ES2018_or_ESNEXT_6015" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Укажите целевую версию ECMAScript: "ES3" (по умолчанию), "ES5", "ES2015", "ES2016", "ES2017", "ES2018" или "ESNEXT".]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -6557,6 +6581,9 @@
<Item ItemId=";Starting_compilation_in_watch_mode_6031" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Starting compilation in watch mode...]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Запуск компиляции в режиме наблюдения...]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -7412,6 +7439,9 @@
<Item ItemId=";Type_0_is_not_assignable_to_type_1_Two_different_types_with_this_name_exist_but_they_are_unrelated_2719" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Type '{0}' is not assignable to type '{1}'. Two different types with this name exist, but they are unrelated.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Тип "{0}" невозможно присвоить типу "{1}". Существует два разных типа с таким именем, но они не связаны.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -8922,7 +8952,7 @@
<Str Cat="Text">
<Val><![CDATA['unique symbol' types are not allowed here.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Типы "уникальный символ" здесь запрещены.]]></Val>
<Val><![CDATA[Типы "unique symbol" здесь запрещены.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -8931,7 +8961,7 @@
<Str Cat="Text">
<Val><![CDATA['unique symbol' types are only allowed on variables in a variable statement.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Типы "уникальный символ" разрешены только в переменных в операторе с переменной.]]></Val>
<Val><![CDATA[Типы "unique symbol" разрешены только у переменных в операторах с переменными.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -8940,7 +8970,7 @@
<Str Cat="Text">
<Val><![CDATA['unique symbol' types may not be used on a variable declaration with a binding name.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Типы "уникальный символ" невозможно использовать в объявлении переменной с именем привязки.]]></Val>
<Val><![CDATA[Типы "unique symbol" невозможно использовать в объявлении переменной с именем привязки.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -411,7 +411,7 @@
<Str Cat="Text">
<Val><![CDATA[A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Numaralandırma bildirimdeki bir üye başlatıcısı, diğer numaralandırmalarda tanımlanan üyeler dahil olmak üzere kendinden sonra bildirilen üyelere başvuramaz.]]></Val>
<Val><![CDATA[Sabit listesi bildirimindeki bir üye başlatıcısı, diğer sabit listelerinde tanımlanan üyeler dahil olmak üzere kendinden sonra bildirilen üyelere başvuramaz.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -860,8 +860,8 @@
<Item ItemId=";Add_0_to_existing_import_declaration_from_1_90015" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add '{0}' to existing import declaration from "{1}"]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA['{0}' öğesini "{1}" konumundaki mevcut içeri aktarma bildirimine ekleyin.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA['{0}' öğesini "{1}" konumundaki mevcut içeri aktarma bildirimine ekle]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add '{0}' to existing import declaration from "{1}".]]></Val>
@@ -872,8 +872,8 @@
<Item ItemId=";Add_index_signature_for_property_0_90017" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add index signature for property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA['{0}' özelliği için dizin imzası ekleyin.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA['{0}' özelliği için dizin imzası ekle]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add index signature for property '{0}'.]]></Val>
@@ -884,8 +884,8 @@
<Item ItemId=";Add_missing_super_call_90001" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add missing 'super()' call]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Eksik 'super()' çağrısını ekleyin.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Eksik 'super()' çağrısını ekle]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add missing 'super()' call.]]></Val>
@@ -896,8 +896,8 @@
<Item ItemId=";Add_this_to_unresolved_variable_90008" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add 'this.' to unresolved variable]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Çözümlenmemiş değişkene 'this.' ekleyin.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Çözümlenmemiş değişkene 'this.' ekle]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Add 'this.' to unresolved variable.]]></Val>
@@ -908,6 +908,9 @@
<Item ItemId=";Adding_a_tsconfig_json_file_will_help_organize_projects_that_contain_both_TypeScript_and_JavaScript__5068" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Adding a tsconfig.json file will help organize projects that contain both TypeScript and JavaScript files. Learn more at https://aka.ms/tsconfig.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Bir tsconfig.json dosyası eklemek, hem TypeScript hem de JavaScript dosyaları içeren projeleri düzenlemenize yardımcı olur. Daha fazla bilgi edinmek için bkz. https://aka.ms/tsconfig.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -978,7 +981,7 @@
<Str Cat="Text">
<Val><![CDATA[Ambient const enums are not allowed when the '--isolatedModules' flag is provided.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA['--isolatedModules' bayrağı sağlandığında çevresel const numaralandırma değerlerine izin verilmez.]]></Val>
<Val><![CDATA['--isolatedModules' bayrağı sağlandığında çevresel const sabit listesi değerlerine izin verilmez.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -1050,7 +1053,7 @@
<Str Cat="Text">
<Val><![CDATA[An arithmetic operand must be of type 'any', 'number' or an enum type.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Aritmetik işlenen, 'any', 'number' veya numaralandırma türünde olmalıdır.]]></Val>
<Val><![CDATA[Aritmetik işlenen, 'any', 'number' veya sabit listesi türünde olmalıdır.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -1095,7 +1098,7 @@
<Str Cat="Text">
<Val><![CDATA[An enum member cannot have a numeric name.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Numaralandırma üyesi, sayısal bir ada sahip olamaz.]]></Val>
<Val><![CDATA[Sabit listesi üyesi, sayısal bir ada sahip olamaz.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -1538,8 +1541,8 @@
<Item ItemId=";Call_decorator_expression_90028" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Call decorator expression]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Dekoratör ifadesini çağırın.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dekoratör ifadesini çağır]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Call decorator expression.]]></Val>
@@ -1955,8 +1958,8 @@
<Item ItemId=";Change_0_to_1_90014" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Change '{0}' to '{1}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA['{0}' değerini '{1}' olarak değiştirin.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA['{0}' değerini '{1}' olarak değiştir]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Change '{0}' to '{1}'.]]></Val>
@@ -1979,8 +1982,8 @@
<Item ItemId=";Change_spelling_to_0_90022" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Change spelling to '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Yazımı '{0}' olarak değiştirin.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Yazımı '{0}' olarak değiştir]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Change spelling to '{0}'.]]></Val>
@@ -2060,6 +2063,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclas_2720" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Class '{0}' incorrectly implements class '{1}'. Did you mean to extend '{1}' and inherit its members as a subclass?]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA['{0}' sınıfı hatalı olarak '{1}' sınıfını uyguluyor. '{1}' sınıfını genişletip üyelerini bir alt sınıf olarak devralmak mı istiyordunuz?]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Class_0_incorrectly_implements_interface_1_2420" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Class '{0}' incorrectly implements interface '{1}'.]]></Val>
@@ -2175,7 +2187,7 @@
<Str Cat="Text">
<Val><![CDATA[Computed property names are not allowed in enums.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Numaralandırmalarda hesaplanan özellik adına izin verilmiyor.]]></Val>
<Val><![CDATA[Sabit listelerinde hesaplanan özellik adına izin verilmiyor.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -2357,8 +2369,8 @@
<Item ItemId=";Declare_method_0_90023" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare method '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA['{0}' metodunu bildirin.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA['{0}' metodunu bildir]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare method '{0}'.]]></Val>
@@ -2369,8 +2381,8 @@
<Item ItemId=";Declare_property_0_90016" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA['{0}' özelliğini bildirin.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA['{0}' özelliğini bildir]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare property '{0}'.]]></Val>
@@ -2381,8 +2393,8 @@
<Item ItemId=";Declare_static_method_0_90024" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare static method '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA['{0}' statik metodunu bildirin.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA['{0}' statik metodunu bildir]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare static method '{0}'.]]></Val>
@@ -2393,8 +2405,8 @@
<Item ItemId=";Declare_static_property_0_90027" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Declare static property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA['{0}' statik özelliğini bildirin.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA['{0}' statik özelliğini bildir]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Declare static property '{0}'.]]></Val>
@@ -2477,8 +2489,8 @@
<Item ItemId=";Disable_checking_for_this_file_90018" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Disable checking for this file]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Bu dosya için denetimi devre dışı bırakın.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Bu dosya için denetimi devre dışı bırak]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Disable checking for this file.]]></Val>
@@ -2571,7 +2583,7 @@
<Str Cat="Text">
<Val><![CDATA[Do not erase const enum declarations in generated code.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Oluşturulan kodda const numaralandırma bildirimlerini silme.]]></Val>
<Val><![CDATA[Oluşturulan kodda const sabit listesi bildirimlerini silme.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -2916,7 +2928,7 @@
<Str Cat="Text">
<Val><![CDATA[Enum declarations must all be const or non-const.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Numaralandırma bildirimlerinin tümü const veya const olmayan değerler olmalıdır.]]></Val>
<Val><![CDATA[Sabit listesi bildirimlerinin tümü const veya const olmayan değerler olmalıdır.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -2925,7 +2937,7 @@
<Str Cat="Text">
<Val><![CDATA[Enum member expected.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Numaralandırma üyesi bekleniyor.]]></Val>
<Val><![CDATA[Sabit listesi üyesi bekleniyor.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -2934,7 +2946,7 @@
<Str Cat="Text">
<Val><![CDATA[Enum member must have initializer.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Numaralandırma üyesi bir başlatıcıya sahip olmalıdır.]]></Val>
<Val><![CDATA[Sabit listesi üyesi bir başlatıcıya sahip olmalıdır.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -2982,7 +2994,7 @@
<Str Cat="Text">
<Val><![CDATA[Expected {0}-{1} type arguments; provide these with an '@extends' tag.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[{0}-{1} türünde bağımsız değişkenler bekleniyordu; bunları bir '@extends' etiketiyle sağlayın.]]></Val>
<Val><![CDATA[{0}-{1} tür bağımsız değişkeni bekleniyordu; bunları bir '@extends' etiketiyle sağlayın.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -3009,7 +3021,7 @@
<Str Cat="Text">
<Val><![CDATA[Expected {0} type arguments, but got {1}.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[{0} türünde bağımsız değişkenler bekleniyordu ancak {1} alındı.]]></Val>
<Val><![CDATA[{0} tür bağımsız değişkeni bekleniyordu ancak {1} alındı.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -3018,7 +3030,7 @@
<Str Cat="Text">
<Val><![CDATA[Expected {0} type arguments; provide these with an '@extends' tag.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[{0} türünde bağımsız değişkenler bekleniyordu; bunları bir '@extends' etiketiyle sağlayın.]]></Val>
<Val><![CDATA[{0} tür bağımsız değişkeni bekleniyordu; bunları bir '@extends' etiketiyle sağlayın.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -3165,7 +3177,7 @@
<Str Cat="Text">
<Val><![CDATA[Exported variable '{0}' has or is using name '{1}' from external module {2} but cannot be named.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dışarı aktarılan '{0}' değişkeni, {2} dış modülündeki '{1}' özel adına sahip veya bu adı kullanıyor, ancak adlandırılamıyor.]]></Val>
<Val><![CDATA[Dışarı aktarılan '{0}' değişkeni, {2} dış modülündeki '{1}' adına sahip veya bu adı kullanıyor, ancak adlandırılamıyor.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -3174,7 +3186,7 @@
<Str Cat="Text">
<Val><![CDATA[Exported variable '{0}' has or is using name '{1}' from private module '{2}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dışarı aktarılan '{0}' değişkeni, '{2}' özel modüldeki '{1}' özel adına sahip veya bu adı kullanıyor.]]></Val>
<Val><![CDATA[Dışarı aktarılan '{0}' değişkeni, '{2}' özel modüldeki '{1}' adına sahip veya bu adı kullanıyor.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -3446,15 +3458,6 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";File_specification_cannot_contain_multiple_recursive_directory_wildcards_Asterisk_Asterisk_Colon_0_5011" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[File specification cannot contain multiple recursive directory wildcards ('**'): '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dosya belirtimi, birden fazla özyinelemeli dizin joker karakter ('**') içeremez: '{0}'.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";File_specification_cannot_end_in_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0_5010" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[File specification cannot end in a recursive directory wildcard ('**'): '{0}'.]]></Val>
@@ -3749,8 +3752,8 @@
<Item ItemId=";Ignore_this_error_message_90019" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Ignore this error message]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Bu hata iletisini yoksayın.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Bu hata iletisini yoksay]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Ignore this error message.]]></Val>
@@ -3773,8 +3776,8 @@
<Item ItemId=";Implement_interface_0_90006" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Implement interface '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA['{0}' arabirimini uygulayın.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA['{0}' arabirimini uygula]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Implement interface '{0}'.]]></Val>
@@ -3794,8 +3797,8 @@
<Item ItemId=";Import_0_from_module_1_90013" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Import '{0}' from module "{1}"]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA["{1}" modülünden '{0}' öğesini içeri aktarın.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA["{1}" modülünden '{0}' öğesini içeri aktar]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Import '{0}' from module "{1}".]]></Val>
@@ -3885,7 +3888,7 @@
<Str Cat="Text">
<Val><![CDATA[In ambient enum declarations member initializer must be constant expression.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Çevresel numaralandırma bildirimlerinde, üye başlatıcısı sabit ifade olmalıdır.]]></Val>
<Val><![CDATA[Çevresel sabit listesi bildirimlerinde, üye başlatıcısı sabit ifade olmalıdır.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -3894,7 +3897,7 @@
<Str Cat="Text">
<Val><![CDATA[In an enum with multiple declarations, only one declaration can omit an initializer for its first enum element.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Birden fazla bildirime sahip numaralandırmada yalnızca bir bildirim ilk numaralandırma öğesine ait başlatıcıyı atlayabilir.]]></Val>
<Val><![CDATA[Birden fazla bildirime sahip sabit listesinde yalnızca bir bildirim ilk sabit listesi öğesine ait başlatıcıyı atlayabilir.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -3903,7 +3906,7 @@
<Str Cat="Text">
<Val><![CDATA[In 'const' enum declarations member initializer must be constant expression.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA['const' numaralandırma bildirimlerinde, üye başlatıcısı sabit ifade olmalıdır.]]></Val>
<Val><![CDATA['const' sabit listesi bildirimlerinde, üye başlatıcısı sabit ifade olmalıdır.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -3947,8 +3950,8 @@
<Item ItemId=";Infer_parameter_types_from_usage_95012" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Infer parameter types from usage]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Parametre türlerini kullanımdan çıkarsayın.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Parametre türleri için kullanımdan çıkarım yap]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Infer parameter types from usage.]]></Val>
@@ -3959,8 +3962,8 @@
<Item ItemId=";Infer_type_of_0_from_usage_95011" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Infer type of '{0}' from usage]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA['{0}' türünü kullanımdan çıkarsayın.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA['{0}' türü için kullanımdan çıkarım yap]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Infer type of '{0}' from usage.]]></Val>
@@ -3971,8 +3974,8 @@
<Item ItemId=";Initialize_property_0_in_the_constructor_90020" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Initialize property '{0}' in the constructor]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Oluşturucu içinde '{0}' özelliğini başlatın.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Oluşturucu içinde '{0}' özelliğini başlat]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Initialize property '{0}' in the constructor.]]></Val>
@@ -3983,8 +3986,8 @@
<Item ItemId=";Initialize_static_property_0_90021" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Initialize static property '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA['{0}' statik özelliğini başlatın.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA['{0}' statik özelliğini başlat]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Initialize static property '{0}'.]]></Val>
@@ -4520,8 +4523,8 @@
<Item ItemId=";Make_super_call_the_first_statement_in_the_constructor_90002" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Make 'super()' call the first statement in the constructor]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Oluşturucudaki ilk deyime 'super()' tarafından çağrı yapılmasını sağla.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Oluşturucudaki ilk deyime 'super()' tarafından çağrı yapılmasını sağla]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Make 'super()' call the first statement in the constructor.]]></Val>
@@ -4689,7 +4692,7 @@
<Str Cat="Text">
<Val><![CDATA[Module Resolution Options]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Modül Çözünürlüğü Seçenekleri]]></Val>
<Val><![CDATA[Modül Çözümleme Seçenekleri]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -4742,6 +4745,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Multiple_consecutive_numeric_separators_are_not_permitted_6189" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Multiple consecutive numeric separators are not permitted.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Birbirini izleyen birden çok sayısal ayırıcıya izin verilmez.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Multiple_constructor_implementations_are_not_allowed_2392" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Multiple constructor implementations are not allowed.]]></Val>
@@ -4832,6 +4844,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Numeric_separators_are_not_allowed_here_6188" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Numeric separators are not allowed here.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Burada sayısal ayırıcılara izin verilmez.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Object_is_possibly_null_2531" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Object is possibly 'null'.]]></Val>
@@ -5199,7 +5220,7 @@
<Str Cat="Text">
<Val><![CDATA[Parameter '{0}' of constructor from exported class has or is using name '{1}' from external module {2} but cannot be named.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dışarı aktarılan sınıftaki oluşturucunun '{0}' parametresi, {2} dış modülündeki '{1}' özel adına sahip veya bu adı kullanıyor, ancak adlandırılamıyor.]]></Val>
<Val><![CDATA[Dışarı aktarılan sınıftaki oluşturucunun '{0}' parametresi, {2} dış modülündeki '{1}' adına sahip veya bu adı kullanıyor, ancak adlandırılamıyor.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -5244,7 +5265,7 @@
<Str Cat="Text">
<Val><![CDATA[Parameter '{0}' of exported function has or is using name '{1}' from external module {2} but cannot be named.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dışarı aktarılan işlevin '{0}' parametresi, {2} dış modülündeki '{1}' özel adına sahip veya bu adı kullanıyor, ancak adlandırılamıyor.]]></Val>
<Val><![CDATA[Dışarı aktarılan işlevin '{0}' parametresi, {2} dış modülündeki '{1}' adına sahip veya bu adı kullanıyor, ancak adlandırılamıyor.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -5307,7 +5328,7 @@
<Str Cat="Text">
<Val><![CDATA[Parameter '{0}' of public method from exported class has or is using name '{1}' from external module {2} but cannot be named.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dışarı aktarılan sınıftaki ortak metodun '{0}' parametresi, {2} dış modülündeki '{1}' özel adına sahip veya bu adı kullanıyor, ancak adlandırılamıyor.]]></Val>
<Val><![CDATA[Dışarı aktarılan sınıftaki ortak metodun '{0}' parametresi, {2} dış modülündeki '{1}' adına sahip veya bu adı kullanıyor, ancak adlandırılamıyor.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -5334,7 +5355,7 @@
<Str Cat="Text">
<Val><![CDATA[Parameter '{0}' of public static method from exported class has or is using name '{1}' from external module {2} but cannot be named.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dışarı aktarılan sınıftaki ortak metodun '{0}' parametresi, {2} dış modülündeki '{1}' özel adına sahip veya bu adı kullanıyor, ancak adlandırılamıyor.]]></Val>
<Val><![CDATA[Dışarı aktarılan sınıftaki ortak metodun '{0}' parametresi, {2} dış modülündeki '{1}' adına sahip veya bu adı kullanıyor, ancak adlandırılamıyor.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -5379,7 +5400,7 @@
<Str Cat="Text">
<Val><![CDATA[Parameter type of public setter '{0}' from exported class has or is using name '{1}' from private module '{2}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dışarı aktarılan sınıftaki genel ayarlayıcı '{0}' için parametre türü, '{2}' özel modülündeki '{1}' adını taşıyor veya kullanıyor.]]></Val>
<Val><![CDATA[Dışarı aktarılan sınıftaki genel ayarlayıcı '{0}' için parametre türü, '{2}' özel modülündeki '{1}' adına sahip veya bu adı kullanıyor.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -5388,7 +5409,7 @@
<Str Cat="Text">
<Val><![CDATA[Parameter type of public setter '{0}' from exported class has or is using private name '{1}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dışarı aktarılan sınıftaki genel ayarlayıcı '{0}' için parametre türü, '{1}' özel adını taşıyor veya kullanıyor.]]></Val>
<Val><![CDATA[Dışarı aktarılan sınıftaki genel ayarlayıcı '{0}' için parametre türü, '{1}' özel adına sahip veya bu adı kullanıyor.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -5397,7 +5418,7 @@
<Str Cat="Text">
<Val><![CDATA[Parameter type of public static setter '{0}' from exported class has or is using name '{1}' from private module '{2}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dışarı aktarılan sınıftaki genel statik ayarlayıcı '{0}' için parametre türü, '{2}' özel modülündeki '{1}' adını taşıyor veya kullanıyor.]]></Val>
<Val><![CDATA[Dışarı aktarılan sınıftaki genel statik ayarlayıcı '{0}' için parametre türü, '{2}' özel modülündeki '{1}' adına sahip veya bu adı kullanıyor.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -5406,7 +5427,7 @@
<Str Cat="Text">
<Val><![CDATA[Parameter type of public static setter '{0}' from exported class has or is using private name '{1}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dışarı aktarılan sınıftaki genel statik ayarlayıcı '{0}' için parametre türü, '{1}' özel adını taşıyor veya kullanıyor.]]></Val>
<Val><![CDATA[Dışarı aktarılan sınıftaki genel statik ayarlayıcı '{0}' için parametre türü, '{1}' özel adına sahip veya bu adı kullanıyor.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -5438,8 +5459,8 @@
<Item ItemId=";Prefix_0_with_an_underscore_90025" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Prefix '{0}' with an underscore]]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA['{0}' için ön ek olarak alt çizgi kullanın.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA['{0}' için ön ek olarak alt çizgi kullan]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Prefix '{0}' with an underscore.]]></Val>
@@ -5487,7 +5508,7 @@
<Str Cat="Text">
<Val><![CDATA[Property '{0}' does not exist on 'const' enum '{1}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA['{0}' özelliği, '{1}' 'const' numaralandırması üzerinde değil.]]></Val>
<Val><![CDATA['{0}' özelliği, '{1}' 'const' sabit listesi üzerinde değil.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -5787,7 +5808,7 @@
<Str Cat="Text">
<Val><![CDATA[Public property '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dışarı aktarılan sınıfın '{0}' ortak özelliği, {2} dış modülündeki '{1}' özel adına sahip veya bu adı kullanıyor, ancak adlandırılamıyor.]]></Val>
<Val><![CDATA[Dışarı aktarılan sınıfın '{0}' ortak özelliği, {2} dış modülündeki '{1}' adına sahip veya bu adı kullanıyor, ancak adlandırılamıyor.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -5814,7 +5835,7 @@
<Str Cat="Text">
<Val><![CDATA[Public static method '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dışarı aktarılan sınıfın '{0}' genel statik metodu, {2} dış modülündeki '{1}' özel adına sahip veya bu adı kullanıyor, ancak adlandırılamıyor.]]></Val>
<Val><![CDATA[Dışarı aktarılan sınıfın '{0}' genel statik metodu, {2} dış modülündeki '{1}' adına sahip veya bu adı kullanıyor, ancak adlandırılamıyor.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -5841,7 +5862,7 @@
<Str Cat="Text">
<Val><![CDATA[Public static property '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dışarı aktarılan sınıfın '{0}' ortak statik özelliği, {2} dış modülündeki '{1}' özel adına sahip veya bu adı kullanıyor, ancak adlandırılamıyor.]]></Val>
<Val><![CDATA[Dışarı aktarılan sınıfın '{0}' ortak statik özelliği, {2} dış modülündeki '{1}' adına sahip veya bu adı kullanıyor, ancak adlandırılamıyor.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -5894,8 +5915,8 @@
<Item ItemId=";Remove_declaration_for_Colon_0_90004" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Remove declaration for: '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA['{0}' bildirimini kaldırın.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA['{0}' bildirimini kaldır]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Remove declaration for: '{0}'.]]></Val>
@@ -6198,7 +6219,7 @@
<Str Cat="Text">
<Val><![CDATA[Return type of public getter '{0}' from exported class has or is using name '{1}' from external module {2} but cannot be named.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dışarı aktarılan sınıftaki genel alıcı '{0}' için dönüş türü, '{2}' dış modülündeki '{1}' adını taşıyor veya kullanıyor ancak adlandırılamıyor.]]></Val>
<Val><![CDATA[Dışarı aktarılan sınıftaki genel alıcı '{0}' için dönüş türü, '{2}' dış modülündeki '{1}' adına sahip veya bu adı kullanıyor ancak adlandırılamıyor.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -6207,7 +6228,7 @@
<Str Cat="Text">
<Val><![CDATA[Return type of public getter '{0}' from exported class has or is using name '{1}' from private module '{2}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dışarı aktarılan sınıftaki genel alıcı '{0}' için dönüş türü, '{2}' özel modülündeki '{1}' adını taşıyor veya kullanıyor.]]></Val>
<Val><![CDATA[Dışarı aktarılan sınıftaki genel alıcı '{0}' için dönüş türü, '{2}' özel modülündeki '{1}' adına sahip veya bu adı kullanıyor.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -6216,7 +6237,7 @@
<Str Cat="Text">
<Val><![CDATA[Return type of public getter '{0}' from exported class has or is using private name '{1}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dışarı aktarılan sınıftaki genel alıcı '{0}' için dönüş türü, '{1}' özel adını taşıyor veya kullanıyor.]]></Val>
<Val><![CDATA[Dışarı aktarılan sınıftaki genel alıcı '{0}' için dönüş türü, '{1}' özel adına sahip veya bu adı kullanıyor.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -6252,7 +6273,7 @@
<Str Cat="Text">
<Val><![CDATA[Return type of public static getter '{0}' from exported class has or is using name '{1}' from external module {2} but cannot be named.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dışarı aktarılan sınıftaki genel statik alıcı '{0}' için dönüş türü, '{2}' dış modülündeki '{1}' adını taşıyor veya kullanıyor ancak adlandırılamıyor.]]></Val>
<Val><![CDATA[Dışarı aktarılan sınıftaki genel statik alıcı '{0}' için dönüş türü, '{2}' dış modülündeki '{1}' adına sahip veya bu adı kullanıyor ancak adlandırılamıyor.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -6261,7 +6282,7 @@
<Str Cat="Text">
<Val><![CDATA[Return type of public static getter '{0}' from exported class has or is using name '{1}' from private module '{2}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dışarı aktarılan sınıftaki genel statik alıcı '{0}' için dönüş türü, '{2}' özel modülündeki '{1}' adını taşıyor veya kullanıyor.]]></Val>
<Val><![CDATA[Dışarı aktarılan sınıftaki genel statik alıcı '{0}' için dönüş türü, '{2}' özel modülündeki '{1}' adına sahip veya bu adı kullanıyor.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -6270,7 +6291,7 @@
<Str Cat="Text">
<Val><![CDATA[Return type of public static getter '{0}' from exported class has or is using private name '{1}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dışarı aktarılan sınıftaki genel statik alıcı '{0}' için dönüş türü, '{1}' özel adını taşıyor veya kullanıyor.]]></Val>
<Val><![CDATA[Dışarı aktarılan sınıftaki genel statik alıcı '{0}' için dönüş türü, '{1}' özel adına sahip veya bu adı kullanıyor.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -6306,7 +6327,7 @@
<Str Cat="Text">
<Val><![CDATA[Reusing module resolutions originating in '{0}' since resolutions are unchanged from old program.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Eski programdaki çözmeler değişmediğinden '{0}' kaynaklı modül çözmeleri yeniden kullanılıyor.]]></Val>
<Val><![CDATA[Eski programdaki çözümlemeler değişmediğinden '{0}' kaynaklı modül çözümlemeleri yeniden kullanılıyor.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -6323,8 +6344,8 @@
<Item ItemId=";Rewrite_as_the_indexed_access_type_0_90026" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Rewrite as the indexed access type '{0}']]></Val>
<Tgt Cat="Text" Stat="Update" Orig="New">
<Val><![CDATA[Dizine eklenmiş erişim türü '{0}' olarak yeniden yazın.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dizine eklenmiş erişim türü '{0}' olarak yeniden yaz]]></Val>
</Tgt>
<Prev Cat="Text">
<Val><![CDATA[Rewrite as the indexed access type '{0}'.]]></Val>
@@ -6443,6 +6464,9 @@
<Item ItemId=";Specify_ECMAScript_target_version_Colon_ES3_default_ES5_ES2015_ES2016_ES2017_ES2018_or_ESNEXT_6015" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[ECMAScript hedef sürümünü belirleyin: 'ES3' (varsayılan), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018' ya da 'ESNEXT'.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -6543,7 +6567,7 @@
<Str Cat="Text">
<Val><![CDATA[Spread types may only be created from object types.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Spread türleri yalnızca nesne türlerinden oluşturulabilir.]]></Val>
<Val><![CDATA[Yayılma türleri yalnızca nesne türlerinden oluşturulabilir.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -6551,6 +6575,9 @@
<Item ItemId=";Starting_compilation_in_watch_mode_6031" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Starting compilation in watch mode...]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Derleme, izleme modunda başlatılıyor...]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -6632,6 +6659,9 @@
<Item ItemId=";Subsequent_property_declarations_must_have_the_same_type_Property_0_must_be_of_type_1_but_here_has_t_2717" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Subsequent property declarations must have the same type. Property '{0}' must be of type '{1}', but here has type '{2}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Ardışık özellik bildirimleri aynı türe sahip olmalıdır. '{0}' özelliği '{1}' türünde olmalıdır, ancak burada '{2}' türüne sahip.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -6924,7 +6954,7 @@
<Str Cat="Text">
<Val><![CDATA[The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Aritmetik işlemin sol tarafı, 'any', 'number' veya bir numaralandırma türünde olmalıdır.]]></Val>
<Val><![CDATA[Aritmetik işlemin sol tarafı, 'any', 'number' veya bir sabit listesi türünde olmalıdır.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -7062,7 +7092,7 @@
<Str Cat="Text">
<Val><![CDATA[The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Aritmetik işlemin sağ tarafı, 'any', 'number' veya bir numaralandırma türünde olmalıdır.]]></Val>
<Val><![CDATA[Aritmetik işlemin sağ tarafı, 'any', 'number' veya bir sabit listesi türünde olmalıdır.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -7403,6 +7433,9 @@
<Item ItemId=";Type_0_is_not_assignable_to_type_1_Two_different_types_with_this_name_exist_but_they_are_unrelated_2719" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Type '{0}' is not assignable to type '{1}'. Two different types with this name exist, but they are unrelated.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA['{0}' türü '{1}' türüne atanamaz. Bu ada sahip iki farklı tür mevcut, ancak bu türler birbiriyle ilişkisiz.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -8442,7 +8475,7 @@
<Str Cat="Text">
<Val><![CDATA['const' enum member initializer was evaluated to a non-finite value.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA['const' numaralandırma üyesi başlatıcısı, sonlu olmayan bir değer olarak hesaplandı.]]></Val>
<Val><![CDATA['const' sabit listesi üyesi başlatıcısı, sonlu olmayan bir değer olarak hesaplandı.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -8451,7 +8484,7 @@
<Str Cat="Text">
<Val><![CDATA['const' enum member initializer was evaluated to disallowed value 'NaN'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA['const' numaralandırma üyesi başlatıcısı, izin verilmeyen 'NaN' değeri olarak hesaplandı.]]></Val>
<Val><![CDATA['const' sabit listesi üyesi başlatıcısı, izin verilmeyen 'NaN' değeri olarak hesaplandı.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -8460,7 +8493,7 @@
<Str Cat="Text">
<Val><![CDATA['const' enums can only be used in property or index access expressions or the right hand side of an import declaration or export assignment.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA['const' numaralandırmaları yalnızca bir özellikte, dizin erişim ifadelerinde, içeri aktarma bildiriminin sağ tarafında veya dışarı aktarma atamasında kullanılabilir.]]></Val>
<Val><![CDATA['const' sabit listeleri yalnızca bir özellikte, dizin erişim ifadelerinde, içeri aktarma bildiriminin sağ tarafında veya dışarı aktarma atamasında kullanılabilir.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -8532,7 +8565,7 @@
<Str Cat="Text">
<Val><![CDATA['extends' clause of exported interface '{0}' has or is using private name '{1}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dışarı aktarılan '{0}' arabirimin 'extends' yan tümcesi, '{1}' özel adına sahip veya bu adı kullanıyor.]]></Val>
<Val><![CDATA[Dışarı aktarılan '{0}' arabiriminin 'extends' yan tümcesi, '{1}' özel adına sahip veya bu adı kullanıyor.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
@@ -46,7 +46,7 @@ function createCancellationToken(args: string[]): ServerCancellationToken {
let perRequestPipeName: string;
let currentRequestId: number;
return {
isCancellationRequested: () => perRequestPipeName !== undefined && pipeExists(perRequestPipeName),
isCancellationRequested: () => perRequestPipeName !== undefined && pipeExists(perRequestPipeName),
setRequest(requestId: number) {
currentRequestId = requestId;
perRequestPipeName = namePrefix + requestId;
+5 -2
View File
@@ -547,9 +547,11 @@ namespace ts.server {
}
switch (response.kind) {
case ActionSet:
project.resolutionCache.clear();
this.typingsCache.updateTypingsForProject(response.projectName, response.compilerOptions, response.typeAcquisition, response.unresolvedImports, response.typings);
break;
case ActionInvalidate:
project.resolutionCache.clear();
this.typingsCache.deleteTypingsForProject(response.projectName);
break;
}
@@ -1774,9 +1776,10 @@ namespace ts.server {
const path = normalizedPathToPath(fileName, currentDirectory, this.toCanonicalFileName);
let info = this.getScriptInfoForPath(path);
if (!info) {
Debug.assert(isRootedDiskPath(fileName) || openedByClient, "Script info with relative file name can only be open script info");
Debug.assert(!isRootedDiskPath(fileName) || this.currentDirectory === currentDirectory || !this.openFilesWithNonRootedDiskPath.has(this.toCanonicalFileName(fileName)), "Open script files with non rooted disk path opened with current directory context cannot have same canonical names");
const isDynamic = isDynamicFileName(fileName);
Debug.assert(isRootedDiskPath(fileName) || isDynamic || openedByClient, "Script info with non-dynamic relative file name can only be open script info");
Debug.assert(!isRootedDiskPath(fileName) || this.currentDirectory === currentDirectory || !this.openFilesWithNonRootedDiskPath.has(this.toCanonicalFileName(fileName)), "Open script files with non rooted disk path opened with current directory context cannot have same canonical names");
Debug.assert(!isDynamic || this.currentDirectory === currentDirectory, "Dynamic files must always have current directory context since containing external project name will always match the script info name.");
// If the file is not opened by client and the file doesnot exist on the disk, return
if (!openedByClient && !isDynamic && !(hostToQueryFileExistsOn || this.host).fileExists(fileName)) {
return;
+93 -81
View File
@@ -121,6 +121,7 @@ namespace ts.server {
private program: Program;
private externalFiles: SortedReadonlyArray<string>;
private missingFilesMap: Map<FileWatcher>;
private plugins: PluginModule[] = [];
private cachedUnresolvedImportsPerFile = new UnresolvedImportsMap();
private lastCachedUnresolvedImportsList: SortedReadonlyArray<string>;
@@ -516,7 +517,18 @@ namespace ts.server {
}
getExternalFiles(): SortedReadonlyArray<string> {
return emptyArray as SortedReadonlyArray<string>;
return toSortedArray(flatMap(this.plugins, plugin => {
if (typeof plugin.getExternalFiles !== "function") return;
try {
return plugin.getExternalFiles(this);
}
catch (e) {
this.projectService.logger.info(`A plugin threw an exception in getExternalFiles: ${e}`);
if (e.stack) {
this.projectService.logger.info(e.stack);
}
}
}));
}
getSourceFile(path: Path) {
@@ -1024,6 +1036,84 @@ namespace ts.server {
orderedRemoveItem(this.rootFiles, info);
this.rootFilesMap.delete(info.path);
}
protected enableGlobalPlugins() {
const host = this.projectService.host;
const options = this.getCompilationSettings();
if (!host.require) {
this.projectService.logger.info("Plugins were requested but not running in environment that supports 'require'. Nothing will be loaded");
return;
}
// Search our peer node_modules, then any globally-specified probe paths
// ../../.. to walk from X/node_modules/typescript/lib/tsserver.js to X/node_modules/
const searchPaths = [combinePaths(this.projectService.getExecutingFilePath(), "../../.."), ...this.projectService.pluginProbeLocations];
if (this.projectService.globalPlugins) {
// Enable global plugins with synthetic configuration entries
for (const globalPluginName of this.projectService.globalPlugins) {
// Skip empty names from odd commandline parses
if (!globalPluginName) continue;
// Skip already-locally-loaded plugins
if (options.plugins && options.plugins.some(p => p.name === globalPluginName)) continue;
// Provide global: true so plugins can detect why they can't find their config
this.projectService.logger.info(`Loading global plugin ${globalPluginName}`);
this.enablePlugin({ name: globalPluginName, global: true } as PluginImport, searchPaths);
}
}
}
protected enablePlugin(pluginConfigEntry: PluginImport, searchPaths: string[]) {
this.projectService.logger.info(`Enabling plugin ${pluginConfigEntry.name} from candidate paths: ${searchPaths.join(",")}`);
const log = (message: string) => {
this.projectService.logger.info(message);
};
for (const searchPath of searchPaths) {
const resolvedModule = <PluginModuleFactory>Project.resolveModule(pluginConfigEntry.name, searchPath, this.projectService.host, log);
if (resolvedModule) {
this.enableProxy(resolvedModule, pluginConfigEntry);
return;
}
}
this.projectService.logger.info(`Couldn't find ${pluginConfigEntry.name}`);
}
private enableProxy(pluginModuleFactory: PluginModuleFactory, configEntry: PluginImport) {
try {
if (typeof pluginModuleFactory !== "function") {
this.projectService.logger.info(`Skipped loading plugin ${configEntry.name} because it did expose a proper factory function`);
return;
}
const info: PluginCreateInfo = {
config: configEntry,
project: this,
languageService: this.languageService,
languageServiceHost: this,
serverHost: this.projectService.host
};
const pluginModule = pluginModuleFactory({ typescript: ts });
const newLS = pluginModule.create(info);
for (const k of Object.keys(this.languageService)) {
if (!(k in newLS)) {
this.projectService.logger.info(`Plugin activation warning: Missing proxied method ${k} in created LS. Patching.`);
(newLS as any)[k] = (this.languageService as any)[k];
}
}
this.projectService.logger.info(`Plugin validation succeded`);
this.languageService = newLS;
this.plugins.push(pluginModule);
}
catch (e) {
this.projectService.logger.info(`Plugin activation failed: ${e}`);
}
}
}
/**
@@ -1087,6 +1177,7 @@ namespace ts.server {
projectService.host,
currentDirectory);
this.projectRootPath = projectRootPath && projectService.toCanonicalFileName(projectRootPath);
this.enableGlobalPlugins();
}
addRoot(info: ScriptInfo) {
@@ -1148,8 +1239,6 @@ namespace ts.server {
/*@internal*/
configFileSpecs: ConfigFileSpecs;
private plugins: PluginModule[] = [];
/** Ref count to the project when opened from external project */
private externalProjectRefCount = 0;
@@ -1231,69 +1320,7 @@ namespace ts.server {
}
}
if (this.projectService.globalPlugins) {
// Enable global plugins with synthetic configuration entries
for (const globalPluginName of this.projectService.globalPlugins) {
// Skip empty names from odd commandline parses
if (!globalPluginName) continue;
// Skip already-locally-loaded plugins
if (options.plugins && options.plugins.some(p => p.name === globalPluginName)) continue;
// Provide global: true so plugins can detect why they can't find their config
this.projectService.logger.info(`Loading global plugin ${globalPluginName}`);
this.enablePlugin({ name: globalPluginName, global: true } as PluginImport, searchPaths);
}
}
}
private enablePlugin(pluginConfigEntry: PluginImport, searchPaths: string[]) {
this.projectService.logger.info(`Enabling plugin ${pluginConfigEntry.name} from candidate paths: ${searchPaths.join(",")}`);
const log = (message: string) => {
this.projectService.logger.info(message);
};
for (const searchPath of searchPaths) {
const resolvedModule = <PluginModuleFactory>Project.resolveModule(pluginConfigEntry.name, searchPath, this.projectService.host, log);
if (resolvedModule) {
this.enableProxy(resolvedModule, pluginConfigEntry);
return;
}
}
this.projectService.logger.info(`Couldn't find ${pluginConfigEntry.name}`);
}
private enableProxy(pluginModuleFactory: PluginModuleFactory, configEntry: PluginImport) {
try {
if (typeof pluginModuleFactory !== "function") {
this.projectService.logger.info(`Skipped loading plugin ${configEntry.name} because it did expose a proper factory function`);
return;
}
const info: PluginCreateInfo = {
config: configEntry,
project: this,
languageService: this.languageService,
languageServiceHost: this,
serverHost: this.projectService.host
};
const pluginModule = pluginModuleFactory({ typescript: ts });
const newLS = pluginModule.create(info);
for (const k of Object.keys(this.languageService)) {
if (!(k in newLS)) {
this.projectService.logger.info(`Plugin activation warning: Missing proxied method ${k} in created LS. Patching.`);
(newLS as any)[k] = (this.languageService as any)[k];
}
}
this.projectService.logger.info(`Plugin validation succeded`);
this.languageService = newLS;
this.plugins.push(pluginModule);
}
catch (e) {
this.projectService.logger.info(`Plugin activation failed: ${e}`);
}
this.enableGlobalPlugins();
}
/**
@@ -1322,21 +1349,6 @@ namespace ts.server {
return this.typeAcquisition;
}
getExternalFiles(): SortedReadonlyArray<string> {
return toSortedArray(flatMap(this.plugins, plugin => {
if (typeof plugin.getExternalFiles !== "function") return;
try {
return plugin.getExternalFiles(this);
}
catch (e) {
this.projectService.logger.info(`A plugin threw an exception in getExternalFiles: ${e}`);
if (e.stack) {
this.projectService.logger.info(e.stack);
}
}
}));
}
/*@internal*/
watchWildcards(wildcardDirectories: Map<WatchDirectoryFlags>) {
updateWatchingWildcardDirectories(
+1 -1
View File
@@ -566,7 +566,7 @@ namespace ts.server.protocol {
// TODO: GH#20538
/* @internal */
export interface GetCombinedCodeFixResponse extends Response {
export interface GetCombinedCodeFixResponse extends Response {
body: CombinedCodeActions;
}
+1 -1
View File
@@ -257,7 +257,7 @@ namespace ts.server {
export class ScriptVersionCache {
private changes: TextChange[] = [];
private readonly versions: LineIndexSnapshot[] = new Array<LineIndexSnapshot>(ScriptVersionCache.maxVersions);
private minVersion = 0; // no versions earlier than min version will maintain change history
private minVersion = 0; // no versions earlier than min version will maintain change history
private currentVersion = 0;
+4
View File
@@ -979,6 +979,10 @@ namespace ts.server {
allowLocalPluginLoads
};
logger.info(`Starting TS Server`);
logger.info(`Version: ${versionMajorMinor}`);
logger.info(`Arguments: ${process.argv.join(" ")}`);
const ioSession = new IOSession(options);
process.on("uncaughtException", err => {
ioSession.logError(err, "unknown");
+4 -4
View File
@@ -1230,7 +1230,7 @@ namespace ts.server {
return project.getLanguageService().getCompletionEntryDetails(file, position, name, formattingOptions, source);
});
return simplifiedResult
? result.map(details => ({ ...details, codeActions: map(details.codeActions, action => this.mapCodeAction(action, scriptInfo)) }))
? result.map(details => ({ ...details, codeActions: map(details.codeActions, action => this.mapCodeAction(project, action)) }))
: result;
}
@@ -1560,7 +1560,7 @@ namespace ts.server {
return undefined;
}
if (simplifiedResult) {
return codeActions.map(codeAction => this.mapCodeAction(codeAction, scriptInfo));
return codeActions.map(codeAction => this.mapCodeAction(project, codeAction));
}
else {
return codeActions;
@@ -1613,8 +1613,8 @@ namespace ts.server {
return { startPosition, endPosition };
}
private mapCodeAction({ description, changes: unmappedChanges, commands }: CodeAction, scriptInfo: ScriptInfo): protocol.CodeAction {
const changes = unmappedChanges.map(change => this.mapTextChangesToCodeEditsUsingScriptinfo(change, scriptInfo));
private mapCodeAction(project: Project, { description, changes: unmappedChanges, commands }: CodeAction): protocol.CodeAction {
const changes = unmappedChanges.map(change => this.mapTextChangesToCodeEditsUsingScriptinfo(change, project.getScriptInfoForNormalizedPath(toNormalizedPath(change.fileName))));
return { description, changes, commands };
}
+5 -4
View File
@@ -262,8 +262,8 @@ namespace ts.BreakpointResolver {
}
// Set breakpoint on identifier element of destructuring pattern
// a or ...c or d: x from
// [a, b, ...c] or { a, b } or { d: x } from destructuring pattern
// `a` or `...c` or `d: x` from
// `[a, b, ...c]` or `{ a, b }` or `{ d: x }` from destructuring pattern
if ((node.kind === SyntaxKind.Identifier ||
node.kind === SyntaxKind.SpreadElement ||
node.kind === SyntaxKind.PropertyAssignment ||
@@ -427,8 +427,9 @@ namespace ts.BreakpointResolver {
}
else {
const functionDeclaration = <FunctionLikeDeclaration>parameter.parent;
const indexOfParameter = indexOf(functionDeclaration.parameters, parameter);
if (indexOfParameter) {
const indexOfParameter = functionDeclaration.parameters.indexOf(parameter);
Debug.assert(indexOfParameter !== -1);
if (indexOfParameter !== 0) {
// Not a first parameter, go to previous parameter
return spanInParameterDeclaration(functionDeclaration.parameters[indexOfParameter - 1]);
}
+1 -1
View File
@@ -837,7 +837,7 @@ namespace ts {
return ClassificationType.keyword;
}
// Special case < and > If they appear in a generic context they are punctuation,
// Special case `<` and `>`: If they appear in a generic context they are punctuation,
// not operators.
if (tokenKind === SyntaxKind.LessThanToken || tokenKind === SyntaxKind.GreaterThanToken) {
// If the node owning the token has a type argument list or type parameter list, then
@@ -21,7 +21,7 @@ namespace ts.codefix {
});
function getQualifiedName(sourceFile: SourceFile, pos: number): QualifiedName & { left: Identifier } | undefined {
const qualifiedName = findAncestor(getTokenAtPosition(sourceFile, pos, /*includeJsDocComment*/ false), isQualifiedName)!;
const qualifiedName = findAncestor(getTokenAtPosition(sourceFile, pos, /*includeJsDocComment*/ true), isQualifiedName)!;
Debug.assert(!!qualifiedName, "Expected position to be owned by a qualified name.");
return isIdentifier(qualifiedName.left) ? qualifiedName as QualifiedName & { left: Identifier } : undefined;
}
+19 -19
View File
@@ -21,8 +21,8 @@ namespace ts.codefix {
getAllCodeActions: context => {
const seenNames = createMap<true>();
return codeFixAll(context, errorCodes, (changes, diag) => {
const { newLineCharacter, program } = context;
const info = getInfo(diag.file!, diag.start!, context.program.getTypeChecker());
const { program } = context;
const info = getInfo(diag.file!, diag.start!, program.getTypeChecker());
if (!info) return;
const { classDeclaration, classDeclarationSourceFile, inJs, makeStatic, token, call } = info;
if (!addToSeen(seenNames, token.text)) {
@@ -31,15 +31,15 @@ namespace ts.codefix {
// Always prefer to add a method declaration if possible.
if (call) {
addMethodDeclaration(changes, classDeclarationSourceFile, classDeclaration, token, call, newLineCharacter, makeStatic, inJs);
addMethodDeclaration(changes, classDeclarationSourceFile, classDeclaration, token, call, makeStatic, inJs);
}
else {
if (inJs) {
addMissingMemberInJs(changes, classDeclarationSourceFile, classDeclaration, token.text, makeStatic, newLineCharacter);
addMissingMemberInJs(changes, classDeclarationSourceFile, classDeclaration, token.text, makeStatic);
}
else {
const typeNode = getTypeNode(program.getTypeChecker(), classDeclaration, token);
addPropertyDeclaration(changes, classDeclarationSourceFile, classDeclaration, token.text, typeNode, makeStatic, newLineCharacter);
addPropertyDeclaration(changes, classDeclarationSourceFile, classDeclaration, token.text, typeNode, makeStatic);
}
}
});
@@ -96,20 +96,20 @@ namespace ts.codefix {
}
function getActionsForAddMissingMemberInJavaScriptFile(context: CodeFixContext, classDeclarationSourceFile: SourceFile, classDeclaration: ClassLikeDeclaration, tokenName: string, makeStatic: boolean): CodeFixAction | undefined {
const changes = textChanges.ChangeTracker.with(context, t => addMissingMemberInJs(t, classDeclarationSourceFile, classDeclaration, tokenName, makeStatic, context.newLineCharacter));
const changes = textChanges.ChangeTracker.with(context, t => addMissingMemberInJs(t, classDeclarationSourceFile, classDeclaration, tokenName, makeStatic));
if (changes.length === 0) return undefined;
const description = formatStringFromArgs(getLocaleSpecificMessage(makeStatic ? Diagnostics.Initialize_static_property_0 : Diagnostics.Initialize_property_0_in_the_constructor), [tokenName]);
return { description, changes, fixId };
}
function addMissingMemberInJs(changeTracker: textChanges.ChangeTracker, classDeclarationSourceFile: SourceFile, classDeclaration: ClassLikeDeclaration, tokenName: string, makeStatic: boolean, newLineCharacter: string): void {
function addMissingMemberInJs(changeTracker: textChanges.ChangeTracker, classDeclarationSourceFile: SourceFile, classDeclaration: ClassLikeDeclaration, tokenName: string, makeStatic: boolean): void {
if (makeStatic) {
if (classDeclaration.kind === SyntaxKind.ClassExpression) {
return;
}
const className = classDeclaration.name.getText();
const staticInitialization = initializePropertyToUndefined(createIdentifier(className), tokenName);
changeTracker.insertNodeAfter(classDeclarationSourceFile, classDeclaration, staticInitialization, { prefix: newLineCharacter, suffix: newLineCharacter });
changeTracker.insertNodeAfter(classDeclarationSourceFile, classDeclaration, staticInitialization);
}
else {
const classConstructor = getFirstConstructorWithBody(classDeclaration);
@@ -117,7 +117,7 @@ namespace ts.codefix {
return;
}
const propertyInitialization = initializePropertyToUndefined(createThis(), tokenName);
changeTracker.insertNodeBefore(classDeclarationSourceFile, classConstructor.body.getLastToken(), propertyInitialization, { suffix: newLineCharacter });
changeTracker.insertNodeAtConstructorEnd(classDeclarationSourceFile, classConstructor, propertyInitialization);
}
}
@@ -142,13 +142,13 @@ namespace ts.codefix {
return typeNode || createKeywordTypeNode(SyntaxKind.AnyKeyword);
}
function createAddPropertyDeclarationAction(context: CodeFixContext, classDeclarationSourceFile: SourceFile, classDeclaration: ClassLikeDeclaration, makeStatic: boolean, tokenName: string, typeNode: TypeNode): CodeFixAction {
function createAddPropertyDeclarationAction(context: textChanges.TextChangesContext, classDeclarationSourceFile: SourceFile, classDeclaration: ClassLikeDeclaration, makeStatic: boolean, tokenName: string, typeNode: TypeNode): CodeFixAction {
const description = formatStringFromArgs(getLocaleSpecificMessage(makeStatic ? Diagnostics.Declare_static_property_0 : Diagnostics.Declare_property_0), [tokenName]);
const changes = textChanges.ChangeTracker.with(context, t => addPropertyDeclaration(t, classDeclarationSourceFile, classDeclaration, tokenName, typeNode, makeStatic, context.newLineCharacter));
const changes = textChanges.ChangeTracker.with(context, t => addPropertyDeclaration(t, classDeclarationSourceFile, classDeclaration, tokenName, typeNode, makeStatic));
return { description, changes, fixId };
}
function addPropertyDeclaration(changeTracker: textChanges.ChangeTracker, classDeclarationSourceFile: SourceFile, classDeclaration: ClassLikeDeclaration, tokenName: string, typeNode: TypeNode, makeStatic: boolean, newLineCharacter: string): void {
function addPropertyDeclaration(changeTracker: textChanges.ChangeTracker, classDeclarationSourceFile: SourceFile, classDeclaration: ClassLikeDeclaration, tokenName: string, typeNode: TypeNode, makeStatic: boolean): void {
const property = createProperty(
/*decorators*/ undefined,
/*modifiers*/ makeStatic ? [createToken(SyntaxKind.StaticKeyword)] : undefined,
@@ -156,10 +156,10 @@ namespace ts.codefix {
/*questionToken*/ undefined,
typeNode,
/*initializer*/ undefined);
changeTracker.insertNodeAtClassStart(classDeclarationSourceFile, classDeclaration, property, newLineCharacter);
changeTracker.insertNodeAtClassStart(classDeclarationSourceFile, classDeclaration, property);
}
function createAddIndexSignatureAction(context: CodeFixContext, classDeclarationSourceFile: SourceFile, classDeclaration: ClassLikeDeclaration, tokenName: string, typeNode: TypeNode): CodeFixAction {
function createAddIndexSignatureAction(context: textChanges.TextChangesContext, classDeclarationSourceFile: SourceFile, classDeclaration: ClassLikeDeclaration, tokenName: string, typeNode: TypeNode): CodeFixAction {
// Index signatures cannot have the static modifier.
const stringTypeNode = createKeywordTypeNode(SyntaxKind.StringKeyword);
const indexingParameter = createParameter(
@@ -176,19 +176,19 @@ namespace ts.codefix {
[indexingParameter],
typeNode);
const changes = textChanges.ChangeTracker.with(context, t => t.insertNodeAtClassStart(classDeclarationSourceFile, classDeclaration, indexSignature, context.newLineCharacter));
const changes = textChanges.ChangeTracker.with(context, t => t.insertNodeAtClassStart(classDeclarationSourceFile, classDeclaration, indexSignature));
// No fixId here because code-fix-all currently only works on adding individual named properties.
return { description: formatStringFromArgs(getLocaleSpecificMessage(Diagnostics.Add_index_signature_for_property_0), [tokenName]), changes, fixId: undefined };
}
function getActionForMethodDeclaration(context: CodeFixContext, classDeclarationSourceFile: SourceFile, classDeclaration: ClassLikeDeclaration, token: Identifier, callExpression: CallExpression, makeStatic: boolean, inJs: boolean): CodeFixAction | undefined {
function getActionForMethodDeclaration(context: textChanges.TextChangesContext, classDeclarationSourceFile: SourceFile, classDeclaration: ClassLikeDeclaration, token: Identifier, callExpression: CallExpression, makeStatic: boolean, inJs: boolean): CodeFixAction | undefined {
const description = formatStringFromArgs(getLocaleSpecificMessage(makeStatic ? Diagnostics.Declare_static_method_0 : Diagnostics.Declare_method_0), [token.text]);
const changes = textChanges.ChangeTracker.with(context, t => addMethodDeclaration(t, classDeclarationSourceFile, classDeclaration, token, callExpression, context.newLineCharacter, makeStatic, inJs));
const changes = textChanges.ChangeTracker.with(context, t => addMethodDeclaration(t, classDeclarationSourceFile, classDeclaration, token, callExpression, makeStatic, inJs));
return { description, changes, fixId };
}
function addMethodDeclaration(changeTracker: textChanges.ChangeTracker, classDeclarationSourceFile: SourceFile, classDeclaration: ClassLikeDeclaration, token: Identifier, callExpression: CallExpression, newLineCharacter: string, makeStatic: boolean, inJs: boolean) {
function addMethodDeclaration(changeTracker: textChanges.ChangeTracker, classDeclarationSourceFile: SourceFile, classDeclaration: ClassLikeDeclaration, token: Identifier, callExpression: CallExpression, makeStatic: boolean, inJs: boolean) {
const methodDeclaration = createMethodFromCallExpression(callExpression, token.text, inJs, makeStatic);
changeTracker.insertNodeAtClassStart(classDeclarationSourceFile, classDeclaration, methodDeclaration, newLineCharacter);
changeTracker.insertNodeAtClassStart(classDeclarationSourceFile, classDeclaration, methodDeclaration);
}
}
@@ -4,9 +4,10 @@ namespace ts.codefix {
const errorCodes = [Diagnostics.Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type.code];
registerCodeFix({
errorCodes,
getCodeActions: context => [
{ fixId, ...tryGetCodeActionForInstallPackageTypes(context.host, context.sourceFile.fileName, getModuleName(context.sourceFile, context.span.start)) }
],
getCodeActions: context => {
const codeAction = tryGetCodeActionForInstallPackageTypes(context.host, context.sourceFile.fileName, getModuleName(context.sourceFile, context.span.start));
return codeAction && [{ fixId, ...codeAction }];
},
fixIds: [fixId],
getAllCodeActions: context => codeFixAll(context, errorCodes, (_, diag, commands) => {
const pkg = getTypesPackageNameToInstall(context.host, getModuleName(diag.file, diag.start));
@@ -10,12 +10,12 @@ namespace ts.codefix {
getCodeActions(context) {
const { program, sourceFile, span } = context;
const changes = textChanges.ChangeTracker.with(context, t =>
addMissingMembers(getClass(sourceFile, span.start), sourceFile, program.getTypeChecker(), context.newLineCharacter, t));
addMissingMembers(getClass(sourceFile, span.start), sourceFile, program.getTypeChecker(), t));
return changes.length === 0 ? undefined : [{ description: getLocaleSpecificMessage(Diagnostics.Implement_inherited_abstract_class), changes, fixId }];
},
fixIds: [fixId],
getAllCodeActions: context => codeFixAll(context, errorCodes, (changes, diag) => {
addMissingMembers(getClass(diag.file!, diag.start!), context.sourceFile, context.program.getTypeChecker(), context.newLineCharacter, changes);
addMissingMembers(getClass(diag.file!, diag.start!), context.sourceFile, context.program.getTypeChecker(), changes);
}),
});
@@ -28,7 +28,7 @@ namespace ts.codefix {
return classDeclaration as ClassLikeDeclaration;
}
function addMissingMembers(classDeclaration: ClassLikeDeclaration, sourceFile: SourceFile, checker: TypeChecker, newLineCharacter: string, changeTracker: textChanges.ChangeTracker): void {
function addMissingMembers(classDeclaration: ClassLikeDeclaration, sourceFile: SourceFile, checker: TypeChecker, changeTracker: textChanges.ChangeTracker): void {
const extendsNode = getClassExtendsHeritageClauseElement(classDeclaration);
const instantiatedExtendsType = checker.getTypeAtLocation(extendsNode);
@@ -36,7 +36,7 @@ namespace ts.codefix {
// so duplicates cannot occur.
const abstractAndNonPrivateExtendsSymbols = checker.getPropertiesOfType(instantiatedExtendsType).filter(symbolPointsToNonPrivateAndAbstractMember);
createMissingMemberNodes(classDeclaration, abstractAndNonPrivateExtendsSymbols, checker, member => changeTracker.insertNodeAtClassStart(sourceFile, classDeclaration, member, newLineCharacter));
createMissingMemberNodes(classDeclaration, abstractAndNonPrivateExtendsSymbols, checker, member => changeTracker.insertNodeAtClassStart(sourceFile, classDeclaration, member));
}
function symbolPointsToNonPrivateAndAbstractMember(symbol: Symbol): boolean {
@@ -1,15 +1,16 @@
/* @internal */
namespace ts.codefix {
const errorCodes = [Diagnostics.Class_0_incorrectly_implements_interface_1.code];
const errorCodes = [Diagnostics.Class_0_incorrectly_implements_interface_1.code,
Diagnostics.Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclass.code];
const fixId = "fixClassIncorrectlyImplementsInterface"; // TODO: share a group with fixClassDoesntImplementInheritedAbstractMember?
registerCodeFix({
errorCodes,
getCodeActions(context) {
const { newLineCharacter, program, sourceFile, span } = context;
const { program, sourceFile, span } = context;
const classDeclaration = getClass(sourceFile, span.start);
const checker = program.getTypeChecker();
return mapDefined<ExpressionWithTypeArguments, CodeFixAction>(getClassImplementsHeritageClauseElements(classDeclaration), implementedTypeNode => {
const changes = textChanges.ChangeTracker.with(context, t => addMissingDeclarations(checker, implementedTypeNode, sourceFile, classDeclaration, newLineCharacter, t));
const changes = textChanges.ChangeTracker.with(context, t => addMissingDeclarations(checker, implementedTypeNode, sourceFile, classDeclaration, t));
if (changes.length === 0) return undefined;
const description = formatStringFromArgs(getLocaleSpecificMessage(Diagnostics.Implement_interface_0), [implementedTypeNode.getText()]);
return { description, changes, fixId };
@@ -22,7 +23,7 @@ namespace ts.codefix {
const classDeclaration = getClass(diag.file!, diag.start!);
if (addToSeen(seenClassDeclarations, getNodeId(classDeclaration))) {
for (const implementedTypeNode of getClassImplementsHeritageClauseElements(classDeclaration)) {
addMissingDeclarations(context.program.getTypeChecker(), implementedTypeNode, diag.file!, classDeclaration, context.newLineCharacter, changes);
addMissingDeclarations(context.program.getTypeChecker(), implementedTypeNode, diag.file!, classDeclaration, changes);
}
}
});
@@ -40,7 +41,6 @@ namespace ts.codefix {
implementedTypeNode: ExpressionWithTypeArguments,
sourceFile: SourceFile,
classDeclaration: ClassLikeDeclaration,
newLineCharacter: string,
changeTracker: textChanges.ChangeTracker
): void {
// Note that this is ultimately derived from a map indexed by symbol names,
@@ -58,12 +58,12 @@ namespace ts.codefix {
createMissingIndexSignatureDeclaration(implementedType, IndexKind.String);
}
createMissingMemberNodes(classDeclaration, nonPrivateMembers, checker, member => changeTracker.insertNodeAtClassStart(sourceFile, classDeclaration, member, newLineCharacter));
createMissingMemberNodes(classDeclaration, nonPrivateMembers, checker, member => changeTracker.insertNodeAtClassStart(sourceFile, classDeclaration, member));
function createMissingIndexSignatureDeclaration(type: InterfaceType, kind: IndexKind): void {
const indexInfoOfKind = checker.getIndexInfoOfType(type, kind);
if (indexInfoOfKind) {
changeTracker.insertNodeAtClassStart(sourceFile, classDeclaration, checker.indexInfoToIndexSignatureDeclaration(indexInfoOfKind, kind, classDeclaration), newLineCharacter);
changeTracker.insertNodeAtClassStart(sourceFile, classDeclaration, checker.indexInfoToIndexSignatureDeclaration(indexInfoOfKind, kind, classDeclaration));
}
}
}
@@ -5,30 +5,30 @@ namespace ts.codefix {
registerCodeFix({
errorCodes,
getCodeActions(context) {
const { sourceFile } = context;
const nodes = getNodes(sourceFile, context.span.start);
const { sourceFile, span } = context;
const nodes = getNodes(sourceFile, span.start);
if (!nodes) return undefined;
const { constructor, superCall } = nodes;
const changes = textChanges.ChangeTracker.with(context, t => doChange(t, sourceFile, constructor, superCall, context.newLineCharacter));
const changes = textChanges.ChangeTracker.with(context, t => doChange(t, sourceFile, constructor, superCall));
return [{ description: getLocaleSpecificMessage(Diagnostics.Make_super_call_the_first_statement_in_the_constructor), changes, fixId }];
},
fixIds: [fixId],
getAllCodeActions(context) {
const { newLineCharacter, sourceFile } = context;
const { sourceFile } = context;
const seenClasses = createMap<true>(); // Ensure we only do this once per class.
return codeFixAll(context, errorCodes, (changes, diag) => {
const nodes = getNodes(diag.file!, diag.start!);
if (!nodes) return;
const { constructor, superCall } = nodes;
if (addToSeen(seenClasses, getNodeId(constructor.parent))) {
doChange(changes, sourceFile, constructor, superCall, newLineCharacter);
doChange(changes, sourceFile, constructor, superCall);
}
});
},
});
function doChange(changes: textChanges.ChangeTracker, sourceFile: SourceFile, constructor: ConstructorDeclaration, superCall: ExpressionStatement, newLineCharacter: string): void {
changes.insertNodeAtConstructorStart(sourceFile, constructor, superCall, newLineCharacter);
function doChange(changes: textChanges.ChangeTracker, sourceFile: SourceFile, constructor: ConstructorDeclaration, superCall: ExpressionStatement): void {
changes.insertNodeAtConstructorStart(sourceFile, constructor, superCall);
changes.deleteNode(sourceFile, superCall);
}
@@ -5,14 +5,14 @@ namespace ts.codefix {
registerCodeFix({
errorCodes,
getCodeActions(context) {
const { sourceFile } = context;
const ctr = getNode(sourceFile, context.span.start);
const changes = textChanges.ChangeTracker.with(context, t => doChange(t, sourceFile, ctr, context.newLineCharacter));
const { sourceFile, span } = context;
const ctr = getNode(sourceFile, span.start);
const changes = textChanges.ChangeTracker.with(context, t => doChange(t, sourceFile, ctr));
return [{ description: getLocaleSpecificMessage(Diagnostics.Add_missing_super_call), changes, fixId }];
},
fixIds: [fixId],
getAllCodeActions: context => codeFixAll(context, errorCodes, (changes, diag) =>
doChange(changes, context.sourceFile, getNode(diag.file, diag.start!), context.newLineCharacter)),
doChange(changes, context.sourceFile, getNode(diag.file, diag.start!))),
});
function getNode(sourceFile: SourceFile, pos: number): ConstructorDeclaration {
@@ -21,8 +21,8 @@ namespace ts.codefix {
return token.parent as ConstructorDeclaration;
}
function doChange(changes: textChanges.ChangeTracker, sourceFile: SourceFile, ctr: ConstructorDeclaration, newLineCharacter: string) {
function doChange(changes: textChanges.ChangeTracker, sourceFile: SourceFile, ctr: ConstructorDeclaration) {
const superCall = createStatement(createCall(createSuper(), /*typeArguments*/ undefined, /*argumentsArray*/ emptyArray));
changes.insertNodeAtConstructorStart(sourceFile, ctr, superCall, newLineCharacter);
changes.insertNodeAtConstructorStart(sourceFile, ctr, superCall);
}
}
@@ -27,11 +27,26 @@ namespace ts.codefix {
}
function doChanges(changes: textChanges.ChangeTracker, sourceFile: SourceFile, extendsToken: Node, heritageClauses: ReadonlyArray<HeritageClause>): void {
changes.replaceNode(sourceFile, extendsToken, createToken(SyntaxKind.ImplementsKeyword));
// We replace existing keywords with commas.
for (let i = 1; i < heritageClauses.length; i++) {
const keywordToken = heritageClauses[i].getFirstToken()!;
changes.replaceNode(sourceFile, keywordToken, createToken(SyntaxKind.CommaToken));
changes.replaceRange(sourceFile, { pos: extendsToken.getStart(), end: extendsToken.end }, createToken(SyntaxKind.ImplementsKeyword));
// If there is already an implements clause, replace the implements keyword with a comma.
if (heritageClauses.length === 2 &&
heritageClauses[0].token === SyntaxKind.ExtendsKeyword &&
heritageClauses[1].token === SyntaxKind.ImplementsKeyword) {
const implementsToken = heritageClauses[1].getFirstToken()!;
const implementsFullStart = implementsToken.getFullStart();
changes.replaceRange(sourceFile, { pos: implementsFullStart, end: implementsFullStart }, createToken(SyntaxKind.CommaToken));
// Rough heuristic: delete trailing whitespace after keyword so that it's not excessive.
// (Trailing because leading might be indentation, which is more sensitive.)
const text = sourceFile.text;
let end = implementsToken.end;
while (end < text.length && ts.isWhiteSpaceSingleLine(text.charCodeAt(end))) {
end++;
}
changes.deleteRange(sourceFile, { pos: implementsToken.getStart(), end });
}
}
}
+1 -1
View File
@@ -9,7 +9,7 @@ namespace ts.codefix {
errorCodes,
getCodeActions(context) {
const { sourceFile } = context;
const info = getInfo(sourceFile, context.span.start, context.program.getTypeChecker());
const info = getInfo(sourceFile, context.span.start, context.program.getTypeChecker());
if (!info) return undefined;
const { node, suggestion } = info;
const changes = textChanges.ChangeTracker.with(context, t => doChange(t, sourceFile, node, suggestion));

Some files were not shown because too many files have changed in this diff Show More