Skip to content

Latest commit

 

History

History
81 lines (54 loc) · 5.71 KB

API-Breaking-Changes.md

File metadata and controls

81 lines (54 loc) · 5.71 KB

TypeScript 2.4

  • The following types/namespaces are now string enums: ts.ScriptElementKind, ts.HighlightSpanKind, ts.ClassificationTypeNames, protocol.CommandTypes, protocol.IndentStyle, protocol.JsxEmit, protocol.ModuleKind, protocol.ModuleResolutionKind, protocol.NewLineKind, and protocol.ScriptTarget. Also, ts.CommandNames is now an alias for protocol.CommandTypes.

  • The type EnumLiteralType was removed and LiteralType is used instead. LiteralType also replaces .text with a .value which may be either a number or string. See String valued members in enums.

  • Declaration does not have a name property. TypeScript now recognize assignments in .js files as declarations in certain contexts, e.g. func.prototype.method = function() {..} will be a declaration of member method on func. As a result Declaration is not guaranteed to have a name property as before. A new type was introduced NamedDeclaration to take the place of Declaration, and Declaration moved to be the base type of both NamedDeclaration and BinaryExpression. Casting to NamedDeclaration should be safe for non .js declarations. See microsoft/TypeScript#15594 for more details.

TypeScript 2.2

  • ts.Map<T> is now a native Map<string, T> or a shim. This affects the SymbolTable type, exposed by Symbol.members, Symbol.exports, and Symbol.globalExports.

TypeScript 2.1

TypeScript 1.9

  • LanguageService.getSourceFile is removed (microsoft/TypeScript#7584), LanguageService.getProgram().getSourceFile should be used instead.

TypeScript 1.7

  • ts.parseConfigFile has been renamed to ts.parseJsonConfigFileContent

TypeScript 1.6

CompilerHost interface change (comparing to TypeScript 1.6 beta)

  • return type of CompilerHost.resolveModuleNames was changed from string[] to ResolvedModule[]. Extra optional property isExternalLibraryImport in ResolvedModule interface denotes if Program should apply some particular set of policies to the resolved file. For example if Node resolver has resolved non-relative module name to the file in 'node_modules', then this file:

    • should be a 'd.ts' file
    • should be an external module
    • should not contain tripleslash references.

    Rationale: files containing external typings should not pollute global scope (to avoid conflicts between different versions of the same package). Also such files should never be added to the list of compiled files (otherwise compiled .ts file might overwrite actual .js file with implementation of the package)

TypeScript 1.5

Program interface changes

  • TypeChecker.emitFiles is no longer available; use Program.emit instead.
  • Getting diagnostics are now all centralized on Program,
    • for Syntactic diagnostics for a single file use: Program.getSyntacticDiagnostics(sourceFile)
    • for Syntactic diagnostics for all files use: Program.getSyntacticDiagnostics()
    • for Semantic diagnostics for a single file use: Program.getSemanticDiagnostics(sourceFile)
    • for Semantic diagnostics for all files use: Program.getSemanticDiagnostics()
    • for compiler options and global diagnostics use: Program.getGlobalDiagnostics()

Tip: use ts.getPreEmitDiagnostics(program) to get syntactic, semantic, and global diagnostics for all files

All usages of 'filename' and 'Filename' changed to 'fileName' and 'FileName'

Here are the details:

  • CompilerHost.getDefaultLibFilename => CompilerHost.getDefaultLibFileName
  • SourceFile.filename => SourceFile.fileName
  • FileReference.filename => FileReference.fileName
  • LanguageServiceHost.getDefaultLibFilename => LanguageServiceHost.getDefaultLibFileName
  • LanguageServiceShimHost.getDefaultLibFilename => LanguageServiceShimHost.getDefaultLibFileName

The full list of APIs can be found in this commit

The syntacticClassifierAbsent parameter for the Classifier.getClassificationsForLine is now required

See Pull Request #2051 for more details.

Changes to TextChange

TextChange.start and TextChange.length became properties instead of methods.

SourceFile.getLineAndCharacterFromPosition

SourceFile.getLineAndCharacterFromPosition became SourceFile.getLineAndCharacterOfPosition

APIs made internal as they are not intended for use outside of the compiler

We did some cleanup to the public interfaces, here is the full list of changes:

typescript_internal.d.ts and typescriptServices_internal.d.ts have been removed

The two files exposed helpers in the past that were not part of the supported TypeScript API. If you were using any of these APIs please file an issue to re-expose them; requests for exposing helper APIs will be triaged on a case-per-case basis.

For more information please see the full change.