spatie/typescript-transformer
This is my package typescript-transformer
3.3.0
8.9M downloads/mo
#877 most downloaded on Packagist
spatie/typescript-transformer
What this package is like to depend on
Last release 2 months ago
19 Jun 2026
Ships fairly regularly
a new release about every 3 months
Nearly every release is documented
notes for 34 of 36 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
37 releases · first in 2020
6 releases in the last 12 months
see the full history below
Release timeline
37 releases · Sep 2020 to Jun 2026Releases
latest 37-
3.3.019 Jun 2026Release notes
Open source →A new option to skip manifest generation, a watch mode fix, and expanded route helper docs.
Add
withoutManifest()option to skip manifest file generation (#153)By default the transformer writes a
typescript-transformer-manifest.jsonfile to power its caching, only rewriting output files whose contents actually changed. That manifest is unwelcome in some setups: when the output directory is a committed git submodule it surfaces as an unexpected tracked file, and when you want a clean diff or run in CI the caching simply is not needed.TypeScriptTransformerConfigFactorynow exposes awithoutManifest()method that turns off manifest generation entirely. When disabled,WriteFilesActionskips the manifest read and write and writes every file directly.$config ->outputDirectory(resource_path('frontend/types')) ->writer(new GlobalNamespaceWriter('generated.d.ts')) ->withoutManifest();
Thanks @pawell67.
Fix BetterReflection attribute instantiation in watch mode (#154)
In watch mode attributes are reflected through Roave BetterReflection.
PhpAttributeNode::newInstance()constructed each attribute with no arguments before invoking the result, which threw anArgumentCountErrorfor any attribute with required constructor arguments such as#[LiteralTypeScriptType('string[]')].The arguments are now spread straight into the constructor, letting PHP bind positional, named, default, and variadic values itself. A regression test covers a constructor-argument attribute reflected through BetterReflection, the path that was previously untested.
Thanks @rubenvanassche.
What's Changed
- Document
route()throw behavior andhasRoutepredicate by @rubenvanassche in #152 - Add withoutManifest() option to skip manifest file generation by @pawell67 in #153
- Add Conductor repository settings by @rubenvanassche in #155
- Fix BetterReflection attribute instantiation in watch mode by @rubenvanassche in #156
Full Changelog: 3.2.0...3.3.0
Release notes
Open source →A new option to skip manifest generation, a watch mode fix, and expanded route helper docs.
Add
withoutManifest()option to skip manifest file generation (#153)By default the transformer writes a
typescript-transformer-manifest.jsonfile to power its caching, only rewriting output files whose contents actually changed. That manifest is unwelcome in some setups: when the output directory is a committed git submodule it surfaces as an unexpected tracked file, and when you want a clean diff or run in CI the caching simply is not needed.TypeScriptTransformerConfigFactorynow exposes awithoutManifest()method that turns off manifest generation entirely. When disabled,WriteFilesActionskips the manifest read and write and writes every file directly.$config ->outputDirectory(resource_path('frontend/types')) ->writer(new GlobalNamespaceWriter('generated.d.ts')) ->withoutManifest();Thanks @pawell67.
Fix BetterReflection attribute instantiation in watch mode (#154)
In watch mode attributes are reflected through Roave BetterReflection.
PhpAttributeNode::newInstance()constructed each attribute with no arguments before invoking the result, which threw anArgumentCountErrorfor any attribute with required constructor arguments such as#[LiteralTypeScriptType('string[]')].The arguments are now spread straight into the constructor, letting PHP bind positional, named, default, and variadic values itself. A regression test covers a constructor-argument attribute reflected through BetterReflection, the path that was previously untested.
Thanks @rubenvanassche.
What's Changed
- Document
route()throw behavior andhasRoutepredicate by @rubenvanassche in https://github.com/spatie/typescript-transformer/pull/152 - Add withoutManifest() option to skip manifest file generation by @pawell67 in https://github.com/spatie/typescript-transformer/pull/153
- Add Conductor repository settings by @rubenvanassche in https://github.com/spatie/typescript-transformer/pull/155
- Fix BetterReflection attribute instantiation in watch mode by @rubenvanassche in https://github.com/spatie/typescript-transformer/pull/156
Full Changelog: https://github.com/spatie/typescript-transformer/compare/3.2.0...3.3.0
- Document
-
3.2.008 May 2026Release notes
Open source →A round of bug fixes and a couple of small extensibility improvements, plus broader generic and inherited type support.
Resolve inherited PHPDoc types against the declaring class (#136)
A child class inheriting a
@varannotation from a parent in another namespace would lose the type information. With a parent like:// namespace App\Models class ParentModel { /** @var string[]|SimpleGenericClass<int, string> */ public array $items; }
A
Child extends ParentModelinApp\Models\Children(nouseofSimpleGenericClass) used to transform$itemsasunknown. The transformer now resolves the annotation against the declaring class's namespace, so inherited@vartypes keep working across namespaces. Class level@propertyand constructor@paramannotations still resolve against the current class, since they belong to that class. Thanks @ragulka.Make
AttributedClassTransformerextensible (#142)AttributedClassTransformerhadTypeScript::classhardcoded in two places, so swapping in a custom attribute meant duplicating the entire transformer. There is now a singleattributeClass()hook:class FrontEndAttributedClassTransformer extends AttributedClassTransformer { protected function attributeClass(): string { return FrontEnd::class; } }
Thanks @CheshireC4t.
Escape the PHP binary path in the watcher worker (#143)
On macOS via Laravel Herd,
PhpExecutableFinder::find()returns/Users/<me>/Library/Application Support/Herd/bin/php84. The space brokeProcess::fromShellCommandline("$phpBinary $command"):sh: /Users/<me>/Library/Application: No such file or directoryThe watcher then looped on
Worker failed to start. Waiting for application to be fixed.... Wrapping the binary inescapeshellarg()fixes it without changing theworkerCommandcontract. Thanks @mdpoulter.Recognize
@template-covariantand@template-contravariant(#144)getTemplateTagValues()defaults to the@templatename, so generic classes annotated with the variance variants were silently losing their type parameter:/** @template-covariant T */ class Paginated { /* T was dropped */ }
Both variant tag names are now collected alongside
@template. Thanks @jakewtaylor.Re-deduplicate nested nodes after visitor mutations (#149)
When
FixArrayLikeStructuresClassPropertyProcessorrewrote aCollection<int, string>next to an existingstring[]in a union, the output ended up asstring[] | string[]. The constructor time dedup onTypeScriptUnionruns once and cannot catch duplicates introduced by later mutations. A newTypeScriptDeduplicableNodeinterface (implemented byTypeScriptUnion,TypeScriptIntersection, andTypeScriptArray) is now invoked by the visitor after children are visited, so any Replace or Remove that introduces duplicates is cleaned up automatically:interface TypeScriptDeduplicableNode { public function deduplicateNodes(): void; }
Fixes #137. Thanks @rubenvanassche.
Centralize TypeScript literal output and fix escape bugs (#150)
A new
OutputsTypeScriptLiteraltrait centralizes how scalar values are written as TypeScript literals (string,int,float,bool,null). Strings are now escaped with a hand-rolled map (\,',\n,\r,\t) and wrapped in single quotes, fixing invalid output for values likeApp\Models\Userorit's. The trait replaces inline interpolation inTypeScriptLiteral,TypeScriptEnum,TypeScriptIdentifier,TypeScriptParameter, andTypeScriptImport, removing four duplicated quoting sites that all had the same hazard. Side effects:TypeScriptLiteralnow emits single quoted strings (previously double quoted viajson_encode), so the slash escaping problem fromjson_encode(e.g.image\/png) is gone, andfloat/nullare now accepted by the constructor. Supersedes #138 by @pataar and #148 by @bram-pkg, both of which surfaced facets of the same bug. Thanks @rubenvanassche.What's Changed
- Fix inherited PHPDoc / annotation type resolution by @ragulka in #136
- feat: make AttributedClassTransformer extensible via attributeClass() by @CheshireC4t in #142
- fix: escape PHP binary path when starting watcher worker by @mdpoulter in #143
- Allow generic types to work with co/contravariant templates by @jakewtaylor in #144
- Re-deduplicate nested nodes after visitor mutations by @rubenvanassche in #149
- Centralize TS literal output and fix escape bugs by @rubenvanassche in #150
Full Changelog: 3.1.1...3.2.0
Release notes
Open source →A round of bug fixes and a couple of small extensibility improvements, plus broader generic and inherited type support.
Resolve inherited PHPDoc types against the declaring class (#136)
A child class inheriting a
@varannotation from a parent in another namespace would lose the type information. With a parent like:// namespace App\Models class ParentModel { /** @var string[]|SimpleGenericClass<int, string> */ public array $items; }A
Child extends ParentModelinApp\Models\Children(nouseofSimpleGenericClass) used to transform$itemsasunknown. The transformer now resolves the annotation against the declaring class's namespace, so inherited@vartypes keep working across namespaces. Class level@propertyand constructor@paramannotations still resolve against the current class, since they belong to that class. Thanks @ragulka.Make
AttributedClassTransformerextensible (#142)AttributedClassTransformerhadTypeScript::classhardcoded in two places, so swapping in a custom attribute meant duplicating the entire transformer. There is now a singleattributeClass()hook:class FrontEndAttributedClassTransformer extends AttributedClassTransformer { protected function attributeClass(): string { return FrontEnd::class; } }Thanks @CheshireC4t.
Escape the PHP binary path in the watcher worker (#143)
On macOS via Laravel Herd,
PhpExecutableFinder::find()returns/Users/<me>/Library/Application Support/Herd/bin/php84. The space brokeProcess::fromShellCommandline("$phpBinary $command"):sh: /Users/<me>/Library/Application: No such file or directoryThe watcher then looped on
Worker failed to start. Waiting for application to be fixed.... Wrapping the binary inescapeshellarg()fixes it without changing theworkerCommandcontract. Thanks @mdpoulter.Recognize
@template-covariantand@template-contravariant(#144)getTemplateTagValues()defaults to the@templatename, so generic classes annotated with the variance variants were silently losing their type parameter:/** @template-covariant T */ class Paginated { /* T was dropped */ }Both variant tag names are now collected alongside
@template. Thanks @jakewtaylor.Re-deduplicate nested nodes after visitor mutations (#149)
When
FixArrayLikeStructuresClassPropertyProcessorrewrote aCollection<int, string>next to an existingstring[]in a union, the output ended up asstring[] | string[]. The constructor time dedup onTypeScriptUnionruns once and cannot catch duplicates introduced by later mutations. A newTypeScriptDeduplicableNodeinterface (implemented byTypeScriptUnion,TypeScriptIntersection, andTypeScriptArray) is now invoked by the visitor after children are visited, so any Replace or Remove that introduces duplicates is cleaned up automatically:interface TypeScriptDeduplicableNode { public function deduplicateNodes(): void; }Fixes #137. Thanks @rubenvanassche.
Centralize TypeScript literal output and fix escape bugs (#150)
A new
OutputsTypeScriptLiteraltrait centralizes how scalar values are written as TypeScript literals (string,int,float,bool,null). Strings are now escaped with a hand-rolled map (\,',\n,\r,\t) and wrapped in single quotes, fixing invalid output for values likeApp\Models\Userorit's. The trait replaces inline interpolation inTypeScriptLiteral,TypeScriptEnum,TypeScriptIdentifier,TypeScriptParameter, andTypeScriptImport, removing four duplicated quoting sites that all had the same hazard. Side effects:TypeScriptLiteralnow emits single quoted strings (previously double quoted viajson_encode), so the slash escaping problem fromjson_encode(e.g.image\/png) is gone, andfloat/nullare now accepted by the constructor. Supersedes #138 by @pataar and #148 by @bram-pkg, both of which surfaced facets of the same bug. Thanks @rubenvanassche.What's Changed
- Fix inherited PHPDoc / annotation type resolution by @ragulka in https://github.com/spatie/typescript-transformer/pull/136
- feat: make AttributedClassTransformer extensible via attributeClass() by @CheshireC4t in https://github.com/spatie/typescript-transformer/pull/142
- fix: escape PHP binary path when starting watcher worker by @mdpoulter in https://github.com/spatie/typescript-transformer/pull/143
- Allow generic types to work with co/contravariant templates by @jakewtaylor in https://github.com/spatie/typescript-transformer/pull/144
- Re-deduplicate nested nodes after visitor mutations by @rubenvanassche in https://github.com/spatie/typescript-transformer/pull/149
- Centralize TS literal output and fix escape bugs by @rubenvanassche in https://github.com/spatie/typescript-transformer/pull/150
Full Changelog: https://github.com/spatie/typescript-transformer/compare/3.1.1...3.2.0
-
3.1.118 Mar 2026Release notes
Open source →What's Changed
- Throw exception when output directory does not exist instead of silently resolving to an empty path (#134)
Previously, when
realpath()failed on a non-existent output directory, it would silently returnfalse, which could cause file generation to target the filesystem root (/). The transformer now validates the output directory exists and throws a clear exception if it doesn't.Full Changelog: 3.1.0...3.1.1
Release notes
Open source →What's Changed
- Throw exception when output directory does not exist instead of silently resolving to an empty path (#134)
-
3.1.016 Mar 2026Release notes
Open source →What's Changed
- Support class-level
@templategenerics in TypeScript output (#133) - Remove unused service provider stub
Classes with
@templatedocblocks now produce generic type aliases:/** * @template T */ class PaginatedResponse { /** @param array<T> $data */ public function __construct( public int $page = 1, public array $data = [], ) {} }
Now correctly generates:
type PaginatedResponse<T> = { page: number; data: T[]; };
Instead of the previous incorrect output where
Twas resolved asunknown.Release notes
Open source →What's Changed
- Support class-level
@templategenerics in TypeScript output (#133) - Remove unused service provider stub
Classes with
@templatedocblocks now produce generic type aliases:/** * @template T */ class PaginatedResponse { /** @param array<T> $data */ public function __construct( public int $page = 1, public array $data = [], ) {} }Now correctly generates:
type PaginatedResponse<T> = { page: number; data: T[]; };Instead of the previous incorrect output where
Twas resolved asunknown. - Support class-level
-
3.0.013 Mar 2026Release notes
Open source →Version 3 is a ground-up rewrite. It introduces a TypeScript AST, a visitor pattern, watch mode, a new extension system, and much more.
TypeScript AST
The package now builds a proper TypeScript Abstract Syntax Tree before writing output. Instead of generating strings directly, transformers create node objects that can be traversed and manipulated before being written to disk:
new TypeScriptAlias('User', new TypeScriptObject([ new TypeScriptProperty('name', new TypeScriptString()), new TypeScriptProperty('age', new TypeScriptNumber()), ])); // Output: type User = { name: string; age: number }
There are a lot of node types available and you can easily add your own!
Visitor Pattern
A
Visitorallows users to traverse the AST, allowing them to replace or completely remove nodes:Visitor::create() ->after(function (TypeScriptUnion $node) { if (count($node->types) === 1) { return VisitorOperation::replace(array_values($node->types)[0]); } }) ->execute($rootNode);
Watch Mode
A file system watcher monitors your PHP files and automatically re-transforms on changes. Your TypeScript definitions stay in sync as you develop - no manual re-running required.
This feature is in beta at the moment.
References & Cross-File Linking
TypeScriptReferencenodes connect generated types to the PHP classes they represent. The system automatically resolves references to the correct import paths based on your writer configuration.TransformedProvider
A new provider interface lets you inject custom transformed types from any source - not just PHP classes:
class AddLaravelCollectionProvider implements TransformedProvider { public function provide(): array { return [new Transformed( typeScriptNode: new TypeScriptAlias( new TypeScriptGeneric(new TypeScriptIdentifier('Collection'), [new TypeScriptIdentifier('T')]), new TypeScriptGeneric(new TypeScriptIdentifier('Array'), [new TypeScriptIdentifier('T')]), ), reference: new ClassStringReference(Collection::class), location: ['Illuminate', 'Support'], )]; } } // Output: type Collection<T> = Array<T>
Rewritten Transformer System
Collectors have been removed. Transformers now decide both whether they can handle a type and how to transform it:
class MyTransformer extends ClassTransformer { protected function shouldTransform(PhpClassNode $phpClassNode): bool { return $phpClassNode->implementsInterface(Data::class); } }
Rewritten Enum Support
The
EnumTransformernow supports union output, native TypeScript enums, and a pluggableEnumProviderinterface for custom enum detection.PHPStan Type Inference
PHPDocumentor has been replaced by PHPStan's type parser. This provides more robust handling of generics, array shapes,
key-of,value-of, and complex union/intersection types.Dual Writer System
ModuleWritergenerates TypeScript modules in a directory structure mirroring your PHP namespaces.GlobalNamespaceWriteroutputs a single.d.tsdeclaration file with namespaced types in global scope.PhpNode Abstraction
Transformers now work with
PhpClassNode,PhpPropertyNode,PhpMethodNodeinstead of raw PHP Reflection objects, providing a unified interface allowing updates to the files to be handled in the same process.Breaking Changes
- Requires PHP 8.2+
- Collectors removed in favor of Transformers
DtoTransformerremoved - useClassTransformerwith custom property processorsTypeProcessorsreplaced byClassPropertyProcessor- TypeReflectors removed
- Inline type support removed
RecordTypeScriptTypeandTypeScriptTransformerattributes removed
Since this is a complete rewrite, there isn't an upgrade guide available. We recommend you to first read full documentation and then upgrade your projects accordingly.
Release notes
Open source →Version 3 is a ground-up rewrite. It introduces a TypeScript AST, a visitor pattern, watch mode, a new extension system, and much more.
TypeScript AST
The package now builds a proper TypeScript Abstract Syntax Tree before writing output. Instead of generating strings directly, transformers create node objects that can be traversed and manipulated before being written to disk:
new TypeScriptAlias('User', new TypeScriptObject([ new TypeScriptProperty('name', new TypeScriptString()), new TypeScriptProperty('age', new TypeScriptNumber()), ])); // Output: type User = { name: string; age: number }There are a lot of node types available and you can easily add your own!
Visitor Pattern
A
Visitorallows users to traverse the AST, allowing them to replace or completely remove nodes:Visitor::create() ->after(function (TypeScriptUnion $node) { if (count($node->types) === 1) { return VisitorOperation::replace(array_values($node->types)[0]); } }) ->execute($rootNode);Watch Mode
A file system watcher monitors your PHP files and automatically re-transforms on changes. Your TypeScript definitions stay in sync as you develop - no manual re-running required.
This feature is in beta at the moment.
References & Cross-File Linking
TypeScriptReferencenodes connect generated types to the PHP classes they represent. The system automatically resolves references to the correct import paths based on your writer configuration.TransformedProvider
A new provider interface lets you inject custom transformed types from any source - not just PHP classes:
class AddLaravelCollectionProvider implements TransformedProvider { public function provide(): array { return [new Transformed( typeScriptNode: new TypeScriptAlias( new TypeScriptGeneric(new TypeScriptIdentifier('Collection'), [new TypeScriptIdentifier('T')]), new TypeScriptGeneric(new TypeScriptIdentifier('Array'), [new TypeScriptIdentifier('T')]), ), reference: new ClassStringReference(Collection::class), location: ['Illuminate', 'Support'], )]; } } // Output: type Collection<T> = Array<T>Rewritten Transformer System
Collectors have been removed. Transformers now decide both whether they can handle a type and how to transform it:
class MyTransformer extends ClassTransformer { protected function shouldTransform(PhpClassNode $phpClassNode): bool { return $phpClassNode->implementsInterface(Data::class); } }Rewritten Enum Support
The
EnumTransformernow supports union output, native TypeScript enums, and a pluggableEnumProviderinterface for custom enum detection.PHPStan Type Inference
PHPDocumentor has been replaced by PHPStan's type parser. This provides more robust handling of generics, array shapes,
key-of,value-of, and complex union/intersection types.Dual Writer System
ModuleWritergenerates TypeScript modules in a directory structure mirroring your PHP namespaces.GlobalNamespaceWriteroutputs a single.d.tsdeclaration file with namespaced types in global scope.PhpNode Abstraction
Transformers now work with
PhpClassNode,PhpPropertyNode,PhpMethodNodeinstead of raw PHP Reflection objects, providing a unified interface allowing updates to the files to be handled in the same process.Breaking Changes
- Requires PHP 8.2+
- Collectors removed in favor of Transformers
DtoTransformerremoved - useClassTransformerwith custom property processorsTypeProcessorsreplaced byClassPropertyProcessor- TypeReflectors removed
- Inline type support removed
RecordTypeScriptTypeandTypeScriptTransformerattributes removed
Since this is a complete rewrite, there isn't an upgrade guide available. We recommend you to first read full documentation and then upgrade your projects accordingly.
-
3.0.0-beta.116 Jan 2026 pre-releaseRelease notes
Open source →The first beta release of TypeScript Transformer v3, a complete rewrite from scratch!
I don't expect that many things will be changing between beta and release but be cautious.
-
2.5.025 Apr 2025Release notes
Open source →What's Changed
- Dropped support for PHP 8.0
- Fix: EnumTransformer properly handling single-quotes in backed enum string values by @sugarmaplemedia in #100
- fix: No quotes for the enum case according to typescriptlang.org by @ABartelt in #97
Full Changelog: 2.4.0...2.5.0
Release notes
Open source →What's Changed
- Dropped support for PHP 8.0
- Fix: EnumTransformer properly handling single-quotes in backed enum string values by @sugarmaplemedia in https://github.com/spatie/typescript-transformer/pull/100
- fix: No quotes for the enum case according to typescriptlang.org by @ABartelt in https://github.com/spatie/typescript-transformer/pull/97
Full Changelog: https://github.com/spatie/typescript-transformer/compare/2.4.0...2.5.0
-
2.4.004 Oct 2024Release notes
Open source →What's Changed
- Don't generate if an enum has no cases yet by @jameshulse in #87
- feat: support
nullToOptionalconfig by @innocenzi in #88
Full Changelog: 2.3.1...2.4.0
Release notes
Open source →What's Changed
- Don't generate if an enum has no cases yet by @jameshulse in https://github.com/spatie/typescript-transformer/pull/87
- feat: support
nullToOptionalconfig by @innocenzi in https://github.com/spatie/typescript-transformer/pull/88
Full Changelog: https://github.com/spatie/typescript-transformer/compare/2.3.1...2.4.0
-
2.3.103 May 2024Release notes
Open source →What's Changed
- feat(enum-collector): improve extensibility of
EnumTransformerby @innocenzi in #78
Full Changelog: 2.3.0...2.3.1
Release notes
Open source →What's Changed
- feat(enum-collector): improve extensibility of
EnumTransformerby @innocenzi in https://github.com/spatie/typescript-transformer/pull/78
Full Changelog: https://github.com/spatie/typescript-transformer/compare/2.3.0...2.3.1
- feat(enum-collector): improve extensibility of
-
2.3.016 Feb 2024Release notes
Open source →What's Changed
- Fix annotations doc by @cosmastech in #73
- Fix backslashes conversion to TypeScript by @Bloemendaal in #72
- Add
DtoTransformer@transformPropertyName()by @cosmastech in #74 - Support PHP Parser 5
- Removal of Psalm
- Addition of PHPStan
Full Changelog: 2.2.2...2.3.0
Release notes
Open source →What's Changed
- Fix annotations doc by @cosmastech in https://github.com/spatie/typescript-transformer/pull/73
- Fix backslashes conversion to TypeScript by @Bloemendaal in https://github.com/spatie/typescript-transformer/pull/72
- Add
DtoTransformer@transformPropertyName()by @cosmastech in https://github.com/spatie/typescript-transformer/pull/74 - Support PHP Parser 5
- Removal of Psalm
- Addition of PHPStan
Full Changelog: https://github.com/spatie/typescript-transformer/compare/2.2.2...2.3.0
-
2.2.201 Dec 2023Release notes
Open source →What's Changed
- Allow Symfony 7 by @jmsche in https://github.com/spatie/typescript-transformer/pull/67
New Contributors
- @jmsche made their first contribution in https://github.com/spatie/typescript-transformer/pull/67
Full Changelog: https://github.com/spatie/typescript-transformer/compare/2.2.1...2.2.2
-
2.2.105 Jul 2023 -
2.2.002 Jun 2023 -
2.1.1407 Apr 2023 -
2.1.1301 Feb 2023 -
2.1.1218 Nov 2022 -
2.1.1128 Sep 2022 -
2.1.1004 Jul 2022 -
2.1.929 Jun 2022 -
2.1.829 Apr 2022 -
2.1.706 Apr 2022 -
2.1.605 Jan 2022 -
2.1.529 Dec 2021Nothing published for this version
-
2.1.423 Dec 2021 -
2.1.316 Dec 2021 -
2.1.216 Dec 2021 -
2.1.108 Dec 2021 -
2.1.005 Nov 2021Release notes
Open source →- Remove classtools dependency
- Add support for PHP 8.1 enums (#12)
- Add
declarekeyword by default to generated output (#13)
-
2.0.309 Jul 2021 -
2.0.230 Jun 2021 -
2.0.114 Apr 2021 -
2.0.008 Apr 2021Release notes
Open source →- The package is now PHP 8 only
- Added TypeReflectors to reflect method return types, method parameters & class properties within your transformers
- Added support for attributes
- Added support for manually adding TypeScript to a class or property
- Added formatters like Prettier which can format TypeScript code
- Added support for inlining types directly
- Updated the DtoTransformer to be a lot more flexible for your own projects
- Added support for PHP 8 union types
-
1.1.208 Jan 2021 -
1.1.126 Nov 2020 -
1.1.026 Nov 2020Release notes
Open source →- Fix some capitalization in namespace names
- Added
SpatieEnumTransformerfrom thelaravel-typescript-transformerpackage
-
1.0.002 Sep 2020 -
0.0.102 Sep 2020Nothing published for this version