mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2026-10-05 23:37:04 +00:00
Clean up type tests
This commit is contained in:
+68
-48
@@ -2,56 +2,38 @@ import vfile = require('vfile');
|
||||
import * as Unist from 'unist';
|
||||
|
||||
// Instantiation
|
||||
vfile();
|
||||
const file: vfile.VFile = vfile();
|
||||
vfile('string');
|
||||
vfile(Buffer.from('string'));
|
||||
vfile(vfile());
|
||||
vfile({ stem: 'readme', extname: '.md' });
|
||||
try {
|
||||
vfile({ extname: '.md' });
|
||||
} catch (e) {
|
||||
console.log('Error: set extname without path');
|
||||
}
|
||||
|
||||
interface CustomVFile extends vfile.VFile {
|
||||
custom: string;
|
||||
data: {
|
||||
custom: number;
|
||||
};
|
||||
}
|
||||
|
||||
const file = vfile<CustomVFile>({
|
||||
path: '~/example.txt',
|
||||
contents: 'Alpha *braavo* charlie.',
|
||||
custom: 'Custom tango',
|
||||
data: {
|
||||
custom: 12345
|
||||
}
|
||||
});
|
||||
const customIsString: string = file.custom;
|
||||
const dataCustomIsNumber: number = file.data.custom;
|
||||
const copiedFile: CustomVFile = vfile(file);
|
||||
|
||||
file.path; // => '~/example.txt'
|
||||
file.dirname; // => '~'
|
||||
vfile({ path: 1234 }); // $ExpectError
|
||||
|
||||
file.path = '~/test.txt';
|
||||
file.dirname = '~';
|
||||
file.extname = '.md';
|
||||
file.basename = 'test.text';
|
||||
file.history = ['~/test.txt']; // => ['~/example.txt', '~/example.md', '~/index.text']
|
||||
file.messages = [{
|
||||
file: '~/test.txt',
|
||||
ruleId: '',
|
||||
reason: '',
|
||||
line: 1,
|
||||
column: 1,
|
||||
location: {
|
||||
start: {
|
||||
line: 1,
|
||||
column: 1,
|
||||
},
|
||||
end: {
|
||||
line: 1,
|
||||
column: 1,
|
||||
}
|
||||
},
|
||||
source: ''
|
||||
}];
|
||||
|
||||
file.basename; // => 'example.md'
|
||||
|
||||
file.basename = 'index.text';
|
||||
|
||||
file.history; // => ['~/example.txt', '~/example.md', '~/index.text']
|
||||
|
||||
file.message('`braavo` is misspelt; did you mean `bravo`?', {line: 1, column: 8});
|
||||
|
||||
console.log(file.messages);
|
||||
|
||||
// Typings of the custom data can be resolved from the parameters above
|
||||
const custom: string = file.custom; // 'Custom tango'
|
||||
const dataCustom: number = file.data.custom; // 12345
|
||||
|
||||
// message method accept any Stringifiable Position(e.g. point, position, node with position)
|
||||
const startPoint: Unist.Point = {
|
||||
line: 1,
|
||||
column: 1,
|
||||
@@ -63,18 +45,56 @@ const position: Unist.Position = {
|
||||
column: 2,
|
||||
},
|
||||
};
|
||||
// Accept Point
|
||||
|
||||
file.message('test', startPoint);
|
||||
// Accept Position
|
||||
file.message('test', position);
|
||||
// Accept Node with extra value
|
||||
file.message('test', {
|
||||
type: 'ramdom node',
|
||||
position,
|
||||
extraValue: 'extra tango',
|
||||
});
|
||||
// But, it must reject any malformed position
|
||||
|
||||
file.message('test', { start: 'invalid point' }); // $ExpectError
|
||||
|
||||
// Typings of original properties must be kept
|
||||
const fileWithWrongParams = vfile({ path: 1234 }); // $ExpectError
|
||||
// Using `data` prop
|
||||
interface CustomData {
|
||||
message: string;
|
||||
}
|
||||
function isCustomData(data: any): data is CustomData {
|
||||
return data != null && typeof data.message === 'string';
|
||||
}
|
||||
function doSomethingWithCustomData(data: CustomData) {
|
||||
}
|
||||
const customData: CustomData = {
|
||||
message: 'tango'
|
||||
};
|
||||
const fileWithData = vfile({
|
||||
data: customData
|
||||
});
|
||||
|
||||
if (isCustomData(fileWithData.data)) {
|
||||
doSomethingWithCustomData(fileWithData.data);
|
||||
}
|
||||
doSomethingWithCustomData(fileWithData.data); // $ExpectError
|
||||
|
||||
// Extending vfile
|
||||
interface CustomVFile extends vfile.VFile {
|
||||
custom: string;
|
||||
data: {
|
||||
custom: number;
|
||||
};
|
||||
}
|
||||
|
||||
const customVFile = vfile<CustomVFile>({
|
||||
path: '~/example.txt',
|
||||
contents: 'Alpha *braavo* charlie.',
|
||||
custom: 'Custom tango',
|
||||
data: {
|
||||
custom: 12345
|
||||
}
|
||||
});
|
||||
|
||||
customVFile.custom = 'test';
|
||||
customVFile.data.custom = 1234;
|
||||
|
||||
const copiedFile: CustomVFile = vfile(customVFile);
|
||||
|
||||
Reference in New Issue
Block a user