diff --git a/package.json b/package.json
index 7948166953..6397c7e19f 100644
--- a/package.json
+++ b/package.json
@@ -58,7 +58,7 @@
"run-sequence": "^1.1.4",
"through2": "^2.0.0",
"tmp": "~0.0.28",
- "typescript": "~1.4.0",
+ "typescript": "~1.8.10",
"uglify-js": "^2.5.0",
"uglifyify": "^3.0.1"
},
diff --git a/scripts/jest/ts-preprocessor.js b/scripts/jest/ts-preprocessor.js
index 760b57345f..8a526ea935 100644
--- a/scripts/jest/ts-preprocessor.js
+++ b/scripts/jest/ts-preprocessor.js
@@ -4,12 +4,15 @@ var fs = require('fs');
var path = require('path');
var ts = require('typescript');
-var tsOptions = {module: 'commonjs'};
+var tsOptions = {
+ module: ts.ModuleKind.CommonJS,
+ jsx: ts.JsxEmit.React,
+};
function formatErrorMessage(error) {
return (
error.file.filename + '(' +
- error.file.getLineAndCharacterFromPosition(error.start).line +
+ error.file.getLineAndCharacterOfPosition(error.start).line +
'): ' +
error.messageText
);
@@ -18,7 +21,7 @@ function formatErrorMessage(error) {
function compile(content, contentFilename) {
var output = null;
var compilerHost = {
- getSourceFile: function(filename, languageVersion) {
+ getSourceFile(filename, languageVersion) {
var source;
// `path.normalize` and `path.join` are used to turn forward slashes in
@@ -30,7 +33,7 @@ function compile(content, contentFilename) {
if (filename === 'lib.d.ts') {
source = fs.readFileSync(
- require.resolve('typescript/bin/lib.d.ts')
+ require.resolve('typescript/lib/lib.d.ts')
).toString();
} else if (filename === 'jest.d.ts') {
source = fs.readFileSync(
@@ -55,34 +58,36 @@ function compile(content, contentFilename) {
}
return ts.createSourceFile(filename, source, 'ES5', '0');
},
- writeFile: function(name, text, writeByteOrderMark) {
+ writeFile(name, text, writeByteOrderMark) {
if (output === null) {
output = text;
} else {
throw new Error('Expected only one dependency.');
}
},
- getCanonicalFileName: function(filename) {
+ getCanonicalFileName(filename) {
return filename;
},
- getCurrentDirectory: function() {
+ getCurrentDirectory() {
return '';
},
- getNewLine: function() {
+ getNewLine() {
return '\n';
},
+ fileExists(filename) {
+ return ts.sys.fileExists(filename);
+ },
+ useCaseSensitiveFileNames() {
+ return ts.sys.useCaseSensitiveFileNames;
+ },
};
var program = ts.createProgram([
'lib.d.ts',
'jest.d.ts',
contentFilename,
], tsOptions, compilerHost);
- var errors = program.getDiagnostics();
- if (!errors.length) {
- var checker = program.getTypeChecker(true);
- errors = checker.getDiagnostics();
- checker.emitFiles();
- }
+ var emitResult = program.emit();
+ var errors = ts.getPreEmitDiagnostics(program).concat(emitResult.diagnostics);
if (errors.length) {
throw new Error(errors.map(formatErrorMessage).join('\n'));
}
diff --git a/src/isomorphic/modern/class/__tests__/ReactTypeScriptClass-test.ts b/src/isomorphic/modern/class/__tests__/ReactTypeScriptClass-test.ts
index 0078265bcb..44298bda15 100644
--- a/src/isomorphic/modern/class/__tests__/ReactTypeScriptClass-test.ts
+++ b/src/isomorphic/modern/class/__tests__/ReactTypeScriptClass-test.ts
@@ -1,3 +1,6 @@
+///
+///
+
/*!
* Copyright 2015-present, Facebook, Inc.
* All rights reserved.