diff --git a/src/container-instance.class.ts b/src/container-instance.class.ts index 5d52a10b..06c1ef3b 100644 --- a/src/container-instance.class.ts +++ b/src/container-instance.class.ts @@ -447,7 +447,7 @@ export class ContainerInstance { * Checks if given parameter type is primitive type or not. */ private isPrimitiveParamType(paramTypeName: string): boolean { - return ['string', 'boolean', 'number', 'object'].includes(paramTypeName.toLowerCase()); + return ['string', 'boolean', 'number', 'object', 'array'].includes(paramTypeName.toLowerCase()); } /** diff --git a/test/github-issues/530/issue-530.spec.ts b/test/github-issues/530/issue-530.spec.ts new file mode 100644 index 00000000..bb28a3b0 --- /dev/null +++ b/test/github-issues/530/issue-530.spec.ts @@ -0,0 +1,39 @@ +import 'reflect-metadata'; +import { Container } from '../../../src/index'; +import { Service } from '../../../src/decorators/service.decorator'; +import { Inject } from '../../../src/decorators/inject.decorator'; +import { Token } from '../../../src/token.class'; + +describe('Github Issues', function () { + beforeEach(() => Container.reset({ strategy: 'resetValue' })); + + it('#530 - inject should ignore array types', () => { + const token = new Token('token'); + Container.set({ id: token, value: 'tokenValue' }); + + @Service() + class TestClass {} + + const classInstance = new TestClass(); + Container.set({ id: TestClass, value: classInstance }); + + @Service() + class Test { + public injectedValue: string; + public injectedClass: TestClass; + public notInjectedArray; + + constructor(@Inject(token) injected: string, injectedClass: TestClass, notInjected?: string[]) { + this.injectedValue = injected; + this.injectedClass = injectedClass; + this.notInjectedArray = notInjected; + } + } + + const resolvedClass = Container.get(Test); + + expect(resolvedClass.injectedClass).toBe(classInstance); + expect(resolvedClass.notInjectedArray).toBe(undefined); + expect(resolvedClass.injectedValue).toBe('tokenValue'); + }); +});