diff --git a/types/properties-reader/index.d.ts b/types/properties-reader/index.d.ts
new file mode 100644
index 0000000000..9a76f16cc9
--- /dev/null
+++ b/types/properties-reader/index.d.ts
@@ -0,0 +1,26 @@
+// Type definitions for properties-reader 0.0
+// Project: https://github.com/steveukx/properties
+// Definitions by: Zlatko Andonovski
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+declare namespace PropertiesReader {
+ type Value = string|number|boolean;
+
+ interface Reader {
+ get(propertyName: string): Value|null;
+ getRaw(propertyName: string): string|null;
+ path(): {};
+ append(path: string): Reader;
+ read(properties: string): Reader;
+ set(propertyName: string, value: Value): Reader;
+ length: number;
+ each(iterator: (key: string, value: Value) => void): Reader;
+ each(iterator: (this: T, key: string, value: Value) => void, scope: T): Reader;
+ getAllProperties(): { [key: string]: Value; };
+ clone(): Reader;
+ }
+}
+
+declare function PropertiesReader(path: string): PropertiesReader.Reader;
+
+export = PropertiesReader;
diff --git a/types/properties-reader/properties-reader-tests.ts b/types/properties-reader/properties-reader-tests.ts
new file mode 100644
index 0000000000..309ba9cab2
--- /dev/null
+++ b/types/properties-reader/properties-reader-tests.ts
@@ -0,0 +1,25 @@
+// Trying some things from the official documentation: https://github.com/steveukx/properties/blob/master/README.md
+
+import PropertiesReader = require('properties-reader');
+
+let properties = PropertiesReader('/path/to/properties.file');
+// Fully qualified name
+let property = properties.get('some.property.name');
+// Yeah, so we have no way of doing this properly.
+property = ( properties.path()).some.property.name;
+
+properties = properties.append('/another.file').append('/yet/another.file');
+properties = properties.read('some.property = Value \n another.property = Another Value');
+properties = properties.set('property.name', 'Property Value');
+
+properties.get('main.some.thing') === 'foo';
+properties.get('blah.some.thing') === 'bar';
+
+const propertiesCount: number = properties.length;
+const raw: string|null = properties.getRaw('path.to.prop');
+
+properties = properties.each((key, value) => {});
+properties = properties.each(function(key, value) {
+ this.x = 5;
+}, { x: 3 });
+const value = properties.getAllProperties()["myKey"];
diff --git a/types/properties-reader/tsconfig.json b/types/properties-reader/tsconfig.json
new file mode 100644
index 0000000000..12dabc301b
--- /dev/null
+++ b/types/properties-reader/tsconfig.json
@@ -0,0 +1,22 @@
+{
+ "compilerOptions": {
+ "module": "commonjs",
+ "lib": [
+ "es6"
+ ],
+ "noImplicitAny": true,
+ "noImplicitThis": true,
+ "strictNullChecks": true,
+ "baseUrl": "../",
+ "typeRoots": [
+ "../"
+ ],
+ "types": [],
+ "noEmit": true,
+ "forceConsistentCasingInFileNames": true
+ },
+ "files": [
+ "index.d.ts",
+ "properties-reader-tests.ts"
+ ]
+}
diff --git a/types/properties-reader/tslint.json b/types/properties-reader/tslint.json
new file mode 100644
index 0000000000..3db14f85ea
--- /dev/null
+++ b/types/properties-reader/tslint.json
@@ -0,0 +1 @@
+{ "extends": "dtslint/dt.json" }