I have a struct like so:
struct tTest{
char foo [1+1];
char bar [64];
};
In TypesScript I have
export interface tTest{
foo: string;
bar: string;
}
Is there a way to add [64] and [1+1] to the type?
As the comments say: js/ts don't support the char type and there's no way to declare array/string lengths.
You can enforce that using a setter though:
interface tTest {
foo: string;
}
class tTestImplementation implements tTest {
private _foo: string;
get foo(): string {
return this._foo;
}
set foo(value: string) {
this._foo = value;
while (this._foo.length < 64) {
this._foo += " ";
}
}
}
You'll need to have an actual class as the interfaces lacks implementation and doesn't survive the compilation process.
I just added spaces to get to the exact length, but you can change that to fit your needs.
You can't force the length of an array in Typescript, as you can't in javascript.
Let's say we have a class tTest as following:
class tTest{
foo = new Array<string>(2);
};
As you can see, we have defined an array of string with length 2, with this syntax we can restrict the type of values we can put inside our array:
let t = new tTest();
console.log('lenght before initialization' + t.foo.length);
for(var i = 0; i < t.foo.length; i++){
console.log(t.foo[i]);
}
t.foo[0] = 'p';
t.foo[1] = 'q';
//t.foo[2] = 3; // you can't do this
t.foo[2] = '3'; // but you can do this
console.log('length after initialization' + t.foo.length);
for(var i = 0; i < t.foo.length; i++){
console.log(t.foo[i]);
}
In this manner we can't put a number value inside your array, but we can't limit the number of values you can put inside.
[1+1]would actually do, but it sounds to me like the right way to do that in Typescript would be to define aclass tTestwith aget foo(): stringmethod which returns your padded/truncated value.