Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upgrade Typescript to v5 #1

Merged
merged 2 commits into from
May 20, 2024
Merged

Conversation

SlicedSilver
Copy link
Contributor

Breaking changes within the typescript dependency mean that this transformer is no longer compatible with Typescript v5+.

This PR also updates all the remaining devDependencies to the latest versions. (however this isn't required for upgrading TS to v5)

FYI: ttypescript has been deprecated, so we are switching to ts-patch on our project (LWC). Perhaps it would be worth adding a note to README.md as well?

I changed the output.js file for the test case. The differences appear (to me) to be unrelated to the purpose of the transformer. I've included the various file outputs below so it easier to check if the output is correct.

Output file contents

Typescript v3 without transformer

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var NonExportedConstEnum;
(function (NonExportedConstEnum) {
    NonExportedConstEnum[NonExportedConstEnum["First"] = 0] = "First";
})(NonExportedConstEnum || (NonExportedConstEnum = {}));
var ExportedConstEnum;
(function (ExportedConstEnum) {
    ExportedConstEnum[ExportedConstEnum["First"] = 0] = "First";
})(ExportedConstEnum = exports.ExportedConstEnum || (exports.ExportedConstEnum = {}));
var NonExportedEnum;
(function (NonExportedEnum) {
    NonExportedEnum[NonExportedEnum["First"] = 0] = "First";
})(NonExportedEnum || (NonExportedEnum = {}));
var ExportedEnum;
(function (ExportedEnum) {
    ExportedEnum[ExportedEnum["First"] = 0] = "First";
})(ExportedEnum = exports.ExportedEnum || (exports.ExportedEnum = {}));
function doSomething() {
    console.log(0 /* First */, 0 /* First */, NonExportedEnum.First, ExportedEnum.First);
}
exports.doSomething = doSomething;

Typescript v3 with transformer

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
;
var ExportedConstEnum;
(function (ExportedConstEnum) {
    ExportedConstEnum[ExportedConstEnum["First"] = 0] = "First";
})(ExportedConstEnum = exports.ExportedConstEnum || (exports.ExportedConstEnum = {}));
var NonExportedEnum;
(function (NonExportedEnum) {
    NonExportedEnum[NonExportedEnum["First"] = 0] = "First";
})(NonExportedEnum || (NonExportedEnum = {}));
var ExportedEnum;
(function (ExportedEnum) {
    ExportedEnum[ExportedEnum["First"] = 0] = "First";
})(ExportedEnum = exports.ExportedEnum || (exports.ExportedEnum = {}));
function doSomething() {
    console.log(0 /* First */, 0 /* First */, NonExportedEnum.First, ExportedEnum.First);
}
exports.doSomething = doSomething;

Typescript v5 without transformer

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.doSomething = exports.ExportedEnum = exports.ExportedConstEnum = void 0;
var NonExportedConstEnum;
(function (NonExportedConstEnum) {
    NonExportedConstEnum[NonExportedConstEnum["First"] = 0] = "First";
})(NonExportedConstEnum || (NonExportedConstEnum = {}));
var ExportedConstEnum;
(function (ExportedConstEnum) {
    ExportedConstEnum[ExportedConstEnum["First"] = 0] = "First";
})(ExportedConstEnum || (exports.ExportedConstEnum = ExportedConstEnum = {}));
var NonExportedEnum;
(function (NonExportedEnum) {
    NonExportedEnum[NonExportedEnum["First"] = 0] = "First";
})(NonExportedEnum || (NonExportedEnum = {}));
var ExportedEnum;
(function (ExportedEnum) {
    ExportedEnum[ExportedEnum["First"] = 0] = "First";
})(ExportedEnum || (exports.ExportedEnum = ExportedEnum = {}));
function doSomething() {
    console.log(0 /* NonExportedConstEnum.First */, 0 /* ExportedConstEnum.First */, NonExportedEnum.First, ExportedEnum.First);
}
exports.doSomething = doSomething;

Typescript v5 with transformer

// Typescript v5 Use transformer
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.doSomething = exports.ExportedEnum = exports.ExportedConstEnum = void 0;
;
var ExportedConstEnum;
(function (ExportedConstEnum) {
    ExportedConstEnum[ExportedConstEnum["First"] = 0] = "First";
})(ExportedConstEnum || (exports.ExportedConstEnum = ExportedConstEnum = {}));
var NonExportedEnum;
(function (NonExportedEnum) {
    NonExportedEnum[NonExportedEnum["First"] = 0] = "First";
})(NonExportedEnum || (NonExportedEnum = {}));
var ExportedEnum;
(function (ExportedEnum) {
    ExportedEnum[ExportedEnum["First"] = 0] = "First";
})(ExportedEnum || (exports.ExportedEnum = ExportedEnum = {}));
function doSomething() {
    console.log(0 /* NonExportedConstEnum.First */, 0 /* ExportedConstEnum.First */, NonExportedEnum.First, ExportedEnum.First);
}
exports.doSomething = doSomething;

@timocov
Copy link
Owner

timocov commented May 20, 2024

Thanks for the change! Merging and releasing it now.

FYI: ttypescript has been deprecated, so we are switching to ts-patch on our project (LWC). Perhaps it would be worth adding a note to README.md as well?

Yeah sounds good, feel free to make a PR if you have spare time. I haven't worked with ts-patch so if you have an experience it would be great.

@timocov timocov merged commit e44f264 into timocov:master May 20, 2024
1 check passed
@timocov
Copy link
Owner

timocov commented May 20, 2024

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants